本发明涉及内存管理,尤其涉及一种内存池动态管理方法和装置、电子设备、存储介质。
背景技术:
1、在视频解码和编码领域的内存管理技术中,针对二进制压缩码流、参考帧、解码帧等核心数据,传统上倾向于采用最大分配模式,这种策略往往导致内存分配过量,从而显著增加了内存消耗。此外,频繁的内存申请和释放操作不仅降低了系统的运行效率,还极易引发内存碎片问题,进而影响了内存的有效利用率。
2、为了提升内存使用效率,业界目前广泛采用内存池技术来管理内存资源。以解码为例,在视频业务启动之前,预先为解码器划分出一个专用的内存池。当一帧数据处理完毕后,解码器并不立即释放该帧占用的内存空间,而是将其保留在内存池中,供后续待解码的帧使用。这种方式实现了内存的复用,显著减少了内存回收与再分配的频率,从而提升了内存使用效率。
3、然而,现有的内存池管理策略也面临挑战。内存池中每个内存块的大小通常基于压缩帧的最大需求来设定,但实际上并非每帧数据都会使用到如此大的内存块,这导致内存池可能占用远超实际业务需求的内存空间,增加了内存成本。
4、尤其对于具备摄像与显示功能的低功耗移动设备和嵌入式设备而言,受限于特定的应用场景和严格的成本控制要求,这些设备通常配备有限的内存容量。在有限的内存资源下,为了满足性能需求,必须对内存进行更为精细且高效的管理。然而,当前的内存管理策略在某些情况下仍然无法避免内存浪费的问题。因此,需要寻求一种创新的、高效的内存管理策略,以进一步优化内存使用效率。
技术实现思路
1、本发明目的在于提供一种内存池动态管理方法和装置、电子设备、存储介质,通过创建一个初始不含内存块的内存池,根据内存申请的实际需求,按需为内存池分配内存块,当内存块的数量达到阈值时,根据内存块的使用频率和实际需求动态替换内存池中的内存块,通过这种按需分配与动态调整的内存池管理方式,提高了内存的使用效率。
2、为达成上述目的,本发明提出如下技术方案:
3、本技术第一方面提供了一种内存池动态管理方法,包括创建内存池,内存池初始时不分配内存块,设置第一阈值n,内存池中的内存块的数量不大于n;
4、响应于内存申请,判断内存池中是否有满足内存申请处于空闲状态的内存块;
5、若内存池中没有满足内存申请处于空闲状态的内存块,当内存池中内存块的数量小于第一阈值n时,为内存池分配内存申请所需的内存块,内存池将新获取的内存块提供给内存申请,当内存池中内存块的数量等于第一阈值n时,释放内存池中处于空闲状态的内存块后,为内存池分配内存申请所需的内存块,内存池将新获取的内存块提供给内存申请;
6、若内存池中有满足内存申请处于空闲状态的内存块,根据内存申请所需的内存块的内存大小,从内存池中为内存申请提供内存块;
7、内存块使用结束后,将内存块归还至内存池。
8、在一些可能的实现方式中,记录内存块分配至内存池的时间t0,内存块被内存申请使用的次数count,接收到内存申请的时间为t1,定义内存块的使用频率h,当内存池需要释放内存块时,释放内存池中处于空闲状态且使用频率h最小的内存块。
9、在一些可能的实现方式中,设置第二阈值tx,记录内存块在内存池中的存在时间t2,当内存池中没有满足内存申请的内存块且内存池中内存块的数量达到n时,释放内存池中存在时间t2大于第二阈值tx处于空闲状态且使用频率h最小的内存块。
10、在一些可能的实现方式中,内存池释放内存块时,当使用频率h最小的内存块有至少两个时,释放内存容量最小的内存块。
11、在一些可能的实现方式中,设置第三阈值t和第四阈值n1,监控内存池中处于空闲状态的内存块数量为m;
12、当m>n1且该状态持续时间达到第三阈值t时,将内存池中处于空闲状态且使用频率h从小到大排列的前(m-n1)个内存块释放。
13、在一些可能的实现方式中,设置第五阈值n2和第六阈值n3,其中n3大于n2,n2大于n1;
14、当n1<m≤n2且该状态持续时间达到第三阈值t时,将内存池中处于空闲状态且使用频率h从小到大排列的前(m-n1)个内存块释放;
15、当n2<m≤n3且该状态持续时间达到第三阈值t时,将内存池中处于空闲状态且使用频率h从小到大排列的前(m-n2)个内存块释放;
16、当n3<m≤n且该状态持续时间达到第三阈值t时,将内存池中处于空闲状态且使用频率h从小到大排列的前(m-n3)个内存块释放。
17、在一些可能的实现方式中,若内存池中有满足内存申请处于空闲状态的内存块,根据内存申请所需的内存块的内存大小,从内存池中为内存申请提供内存块,还包括:从内存池中选择满足内存申请的要求且内存容量最小的内存块,提供给内存申请。
18、本技术第二方面提供了一种内存池动态管理装置,包括
19、业务模块,用于发出内存申请,当内存块使用后,归还使用的内存块;
20、内存池管理模块,用于创建内存池,内存池初始时不分配内存块,设置第一阈值n,内存池中的内存块的数量不大于n,记录每个内存块分配至内存池的时间t0和内存块被内存申请使用的次数count,接收到内存申请的时间为t1,定义内存块的使用频率h,设置第二阈值tx,内存块在内存池中的存在时间t2;
21、系统内存管理模块,用于给内存池管理模块分配内存块,接收内存池管理模块释放的内存块;
22、内存池管理模块包括第一判断子模块,记录每个内存块分配至内存池的时间t0和内存块被内存申请使用的次数count,接收到内存申请的时间为t1,内存块在内存池中的存在时间t2,定义内存块的使用频率h,,设置第二阈值tx,用于当接收到内存申请时,判断内存池中是否有满足内存申请的内存块;
23、若内存池中没有满足内存申请的处于空闲状态的内存块,当内存池中内存块的数量小于第一阈值n时,系统管理模块为内存池分配内存申请所需的内存块,内存池管理模块将内存池获取的内存块提供给业务模块,当内存池中内存块的数量等于第一阈值n,在内存池处于空闲状态的内存块中,选取使用频率h最小且存在时间t2大于第二阈值tx的内存块进行释放,若使用频率h最小的内存块有至少两个时,释放内存容量最小的内存块,内存块释放后,系统管理模块为内存池分配内存申请所需的内存块,内存池管理模块将内存池获取的内存块提供给业务模块;
24、若内存池中有满足内存申请的处于空闲状态的内存块,根据内存申请所需的内存块的内存大小,内存池管理模块从内存池中选择满足内存申请的要求且内存容量最小的内存块,提供给业务模块;
25、内存池管理模块包括第二判断子模块,设置第三阈值t、第四阈值n1、第五阈值n2和第六阈值n3,内存池中处于空闲状态的内存块数量为m,当n1<m≤n2且该状态持续时间达到第三阈值t时,将内存池中处于空闲状态且使用频率h从小到大排列的前(m-n1)个内存块释放至系统内存管理模块;当n2<m≤n3且该状态持续时间达到第三阈值t时,将内存池中处于空闲状态且使用频率h从小到大排列的前(m-n2)个内存块释放至系统内存管理模块;当n3<m≤n且该状态持续时间达到第三阈值t时,将内存池中处于空闲状态且使用频率h从小到大排列的前(m-n3)个内存块释放至系统内存管理模块。
26、本技术第三方面提供了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,所述处理器、所述通信接口、所述存储器通过通信总线完成相互间的通信;
27、所述存储器,用于存放计算机程序;
28、所述处理器,用于执行所述存储器上所存放的程序时,实现本技术第一方面任一的方法步骤。
29、本技术第四方面提供了一种计算机可读存储介质,计算机可读存储介质内存储有计算机程序,计算机程序被处理器执行时实现本技术第一方面任一的方法步骤。
30、有益效果:
31、由以上技术方案可知该方法通过构建一个初始状态下不包含任何内存块的内存池,根据实际应用中的内存申请需求,系统会动态地为内存池分配所需的内存块,当内存池中的内存块数量达到上限时,且当前内存块无法满足新的内存申请要求时,释放那些使用频率较低的内存块,从而为新的内存需求腾出空间。这种按需分配与灵活调整的内存池管理策略,不仅确保了内存池能够满足实际应用的需求,还显著降低了内存池的容量占用,从而显著提升了内存的使用效率和性能。
32、应当理解,前述构思以及在下面更加详细地描述的额外构思的所有组合只要在这样的构思不相互矛盾的情况下都可以被视为本公开的发明主题的一部分。
33、结合附图从下面的描述中可以更加全面地理解本发明教导的前述和其他方面、实施例和特征。本发明的其他附加方面例如示例性实施方式的特征和/或有益效果将在下面的描述中显见,或通过根据本发明教导的具体实施方式的实践中得知。
1.一种内存池动态管理方法,其特征在于:
2.根据权利要求1的内存池动态管理方法,其特征在于所述当所述内存池中内存块的数量达到第一阈值n时,释放所述内存池中处于空闲状态的内存块后,包括:记录内存块分配至所述内存池的时间t0,内存块被所述内存申请使用的次数count,接收到所述内存申请的时间为t1,定义内存块的使用频率h,
3.根据权利要求2的内存池动态管理方法,其特征在于:设置第二阈值tx,记录内存块在所述内存池中的存在时间t2;
4.根据权利要求2或3的内存池动态管理方法,其特征在于:所述内存池释放内存块时,当使用频率h最小的内存块有至少两个时,释放内存容量最小的内存块。
5.根据权利要求2的内存池动态管理方法,其特征在于:设置第三阈值t和第四阈值n1,监控所述内存池中处于空闲状态的内存块的数量m;
6.根据权利要求5的内存池动态管理方法,其特征在于还包括:设置第五阈值n2和第六阈值n3,其中n3>n2>n1;
7.根据权利要求1的内存池动态管理方法,其特征在于若所述内存池中有满足所述内存申请处于空闲状态的内存块,根据内存申请所需的内存块的内存大小,所述内存池为所述内存申请提供内存块,还包括:所述内存池选择满足所述内存申请的要求且内存容量最小的内存块,提供给所述内存申请。
8.一种内存池动态管理装置,其特征在于:包括
9.一种电子设备,其特征在于:包括处理器、通信接口、存储器和通信总线,其中,所述处理器、所述通信接口、所述存储器通过通信总线完成相互间的通信;
10.一种计算机可读存储介质,其特征在于,计算机可读存储介质内存储有计算机程序,计算机程序被处理器执行时实现权利要求1-7任一的方法步骤。