首页 专利交易 科技果 科技人才 科技服务 国际服务 商标交易 会员权益 IP管家助手 需求市场 关于龙图腾
 /  免费注册
到顶部 到底部
清空 搜索

基于TCMalloc内存分配器动态调整缓存的方法、装置及程序产品 

买专利卖专利找龙图腾,真高效! 查专利查商标用IPTOP,全免费!专利年费监控用IP管家,真方便!

申请/专利权人:厦门星纵数字科技有限公司

摘要:本发明提供了一种基于TCMalloc内存分配器动态调整缓存的方法、装置及程序产品,该方法包括:根据预先设定的时间间隔定时监听应用程序实际使用的内存,调整TCMalloc内存分配器中空闲Span管理器的缓存释放机制及设置TCMalloc内存分配器中线程缓存池内线程的最大缓存大小。利用上述技术方案,增强并扩展了TCMalloc内存管理机制的智能化应用,显著提高内存资源的利用效率,减少了内存管理和内存回收对系统性能的影响。

主权项:1.一种基于TCMalloc内存分配器动态调整缓存的方法,所述TCMalloc内存分配器包括:空闲Span管理器、线程公用缓存池和线程缓存池,其特征在于,所述方法包括根据预先设定的时间间隔定时监听应用程序实际使用的内存,并通过如下步骤来动态调整当前的系统缓存:调整所述空闲Span管理器中的缓存释放机制,包括:计算所述应用程序实际占用内存的大小,并根据所述应用程序实际占用内存的大小计算所述应用程序的缓存阈值,当所述空闲Span管理器的缓存字节数或所述空闲Span管理器向当前系统获取的内存中未映射的字节数大于所述缓存阈值时,释放所述空闲Span管理器中的缓存;计算当前系统剩余内存的百分比,当所述百分比小于预定百分比阈值时,释放所述空闲Span管理器中的缓存;设置所述线程缓存池中线程的最大缓存大小,包括:创建线程内存管理容器,定义所述线程内存管理容器内的线程内存统计结构体;重写所述应用程序中的线程创建函数,其中,所述线程创建函数向所述线程内存管理容器上报线程的线程id,并在所述线程内存管理容器中构建所述线程的线程内存统计结构体;重写所述应用程序中的内存分配函数,其中,所述内存分配函数根据当前调用所述内存分配函数线程的线程id,找到所述线程的线程内存管理容器,统计所述线程申请的内存大小及所述线程申请内存的次数;通过所述线程的线程内存统计结构体与所述线程的线程id获得所述线程的常用内存,统计所述线程的常用内存总和,并根据所述线程的常用内存总和设置所述线程的最大缓存大小;计算应用程序实际占用内存的大小,并根据所述应用程序实际占用内存的大小计算所述应用程序的缓存阈值的步骤,包括:S1,获取所述空闲Span管理器向当前系统获取的总字节数pageheap.system_bytes及所述TCMalloc内存分配器跟踪内存的结构所占用的字节数metadata_bytes,并根据如下公式获得当前系统的虚拟内存字节数:virtual_memory_used=pageheap.system_bytes+metadata_bytes;S2,获取所述空闲Span管理器向当前系统获取的内存中未映射的字节数pageheap.unmapped_bytes,根据如下公式获得所述TCMalloc内存分配器实际占用的物理内存字节数:physical_memory_used=virtual_memory_used-pageheap.unmapped_bytes;S3,获取所述空闲Span管理器的缓存字节数pageheap.free_bytes、所述线程公用缓存池的缓存字节数central_bytes、所述线程公用缓存池准备发放给所述线程缓存池的缓存字节数transfer_bytes及所述线程缓存池的缓存字节数thread_bytes,根据如下公式获得所述TCMalloc内存分配器分配给所述应用程序实际占用的内存大小:bytes_in_use_by_app=physical_memory_used-metadata_bytes-pageheap.free_bytes-central_bytes-transfer_bytes-thread_bytes;S4,根据如下公式获得所述应用程序的缓存阈值:threshold=bytes_in_use_by_appnumber其中,所述number为预先设定的一个正整数,且10≤number≤30。

全文数据:

权利要求:

百度查询: 厦门星纵数字科技有限公司 基于TCMalloc内存分配器动态调整缓存的方法、装置及程序产品

免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。