内存检测方法及装置制造方法及图纸

技术编号:33029615 阅读:16 留言:0更新日期:2022-04-15 09:05
本公开关于一种内存检测方法及装置。该内存检测方法包括:在业务程序每分配超过预定个数的字节的情况下,从内存中导出一个文件,其中,文件包括业务程序的每个调用栈的未释放的字节数;针对每个调用栈,执行如下操作:基于每个文件的导出时间和每个文件中当前调用栈的未释放的字节数进行拟合处理,得到拟合信息;通过拟合信息,确定当前调用栈在当前时间和业务程序启动时间的未释放的字节数之间的字节变化信息;基于每个调用栈的字节变化信息对每个调用栈进行排序,得到内存增长排序信息。得到内存增长排序信息。得到内存增长排序信息。

【技术实现步骤摘要】
内存检测方法及装置


[0001]本公开涉及计算机领域,尤其涉及一种内存检测方法及装置。

技术介绍

[0002]在定位C++服务的内存膨胀的场景中,需要确定有哪些调用栈的内存增长比较大,这类问题不像内存泄漏,对于一个内存占比比较大的服务来说,很多内存占用是合理的,因此,单纯的通过调用栈内存占比确定调用栈内存的增长是不准确的。
[0003]目前,定位C++服务的内存膨胀常用的方法是使用asan或者hook malloc/free来记录所有的内存分配,但是,上述方法对业务程序的性能影响比较大,常常导致业务运行缓慢,甚至由于运行过慢都无法复现内存膨胀,并且上述方法在进程退出时才能检测到未释放内存,而一般超级大型服务持续运行并不退出,故无法做到所有的全局对象或者缓存在进程退出时释放内存,在这种场景下还会存在误判的问题。

技术实现思路

[0004]本公开提供一种内存检测方法及装置,以至少解决相关技术中确定内存膨胀的方法对业务程序的性能损耗大且存在误判的问题。
[0005]根据本公开实施例的第一方面,提供一种内存检测方法,包括本文档来自技高网...

【技术保护点】

【技术特征摘要】
1.一种内存检测方法,其特征在于,包括:在业务程序每分配超过预定个数的字节的情况下,从内存中导出一个文件,其中,所述文件包括所述业务程序的每个调用栈的未释放的字节数;针对每个调用栈,执行如下操作:基于每个文件的导出时间和所述每个文件中当前调用栈的未释放的字节数进行拟合处理,得到拟合信息;通过所述拟合信息,确定所述当前调用栈在当前时间和所述业务程序启动时间的未释放的字节数之间的字节变化信息;基于所述每个调用栈的字节变化信息对每个调用栈进行排序,得到内存增长排序信息。2.如权利要求1所述的内存检测方法,其特征在于,所述基于所述每个调用栈的字节变化信息对每个调用栈进行排序,得到内存增长排序信息,包括:从所有调用栈中筛选出所述字节变化信息中字节变化大于预设值的调用栈;基于筛选后的调用栈的字节变化信息对所述筛选后的调用栈进行排序,得到所述内存增长排序信息。3.如权利要求1所述的内存检测方法,其特征在于,所述通过所述拟合信息,确定所述当前调用栈在当前时间和所述业务程序启动时间的未释放的字节数之间的的字节变化信息,包括:基于所述拟合信息,确定所述当前调用栈在当前时间前预定时间内的未释放的字节数的第一平均值;基于所述拟合信息,确定所述当前调用栈在所述业务程序启动后预定时间内的未释放的字节数的第二平均值;获取所述第二平均值和所述第一平均值的字节差值。4.如权利要求1所述的内存检测方法,其特征在于,所述通过所述拟合信息,确定所述当前调用栈在当前时间和所述业务程序启动时间的未释放的字节数之间的的字节变化信息,包括:基于所述拟合信息,确定所述当前调用栈在当前时间前预定时间内的未释放的字节数;获取所述当前调用栈在当前时间前预定时间内的未释放的字节数和在当前时间前预定时间内导出的包含所述当前调用栈的文件的数量的第一比值;基于所述拟合信息,确定所述当前调用栈在所述业务程序启动后预定时间内的未释放的字节数;获取所述当前调用栈在所述业务程序启动后预定时间内的未释放的字...

【专利技术属性】
技术研发人员:夏阿辉
申请(专利权)人:北京达佳互联信息技术有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1