【技术实现步骤摘要】
一种内存泄漏检测方法和装置
本公开涉及计算机
,尤其涉及一种内存泄漏检测方法和装置。
技术介绍
内存泄漏也称作“存储渗漏”,指的是程序运行过程中动态分配的内存在使用完毕后未释放或无法释放的现象。内存泄漏会造成内存的浪费,以及导致程序运行速度减慢甚至崩溃等严重后果。因此,亟需一种有效的内存泄漏检测方法检测程序运行过程中是否发生了内存泄漏。
技术实现思路
有鉴于此,本公开提出了一种内存泄漏检测方法和装置,使得可以实现对目标进程运行过程中是否发生内存泄漏的有效检测。根据本公开的第一方面,提供了一种内存泄漏检测方法,包括:通过Hook目标进程运行过程中每个内存操作对应的内存操作相关函数,确定每个内存操作对应的内存分配信息;根据每个内存操作对应的内存分配信息,生成内存镜像文件;根据内存镜像文件,检测所述目标进程运行过程中是否出现内存泄漏。在一种可能的实现方式中,所述方法还包括:当检测到所述目标进程运行过程中出现内存泄漏时,根据内存镜像文件定位内存泄漏位置。在一种可能的实现方式中,所述内 ...
【技术保护点】
1.一种内存泄漏检测方法,其特征在于,包括:/n通过获取Hook目标进程运行过程中每个内存操作对应的内存操作相关函数,确定每个内存操作对应的内存分配信息;/n根据每个内存操作对应的内存分配信息,生成内存镜像文件;/n根据内存镜像文件,检测所述目标进程运行过程中是否出现内存泄漏。/n
【技术特征摘要】
1.一种内存泄漏检测方法,其特征在于,包括:
通过获取Hook目标进程运行过程中每个内存操作对应的内存操作相关函数,确定每个内存操作对应的内存分配信息;
根据每个内存操作对应的内存分配信息,生成内存镜像文件;
根据内存镜像文件,检测所述目标进程运行过程中是否出现内存泄漏。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当检测到所述目标进程运行过程中出现内存泄漏时,根据内存镜像文件定位内存泄漏位置。
3.根据权利要求1所述的方法,其特征在于,所述内存操作相关函数包括下述至少一种:
动态内存分配malloc函数、动态内存分配并清零calloc函数、释放内存空间free函数、内存映射mmap函数,和解除内存映射munmap函数。
4.根据权利要求1所述的方法,其特征在于,根据每个内存操作对应的内存分配信息,生成内存镜像文件,包括:
确定第一时刻所述目标进程占用的内存大小;
若所述第一时刻所述目标进程占用的内存大小大于等于第一阈值,根据所述第一时刻之前每个内存操作对应的内存分配信息,生成所述目标进程在所述第一时刻对应的内存镜像文件。
5.根据权利要求4所述的方法,其特征在于,所述第一时刻为首次生成内存镜像文件的时刻,
所述方法还包括:
确定第一时刻后的第二时刻所述目标进程占用的内存大小;
若所述第二时刻所述目标进程占用的内存大小相比于上次生成内存镜像文件时所述目标进程占用的内存大小增加第二阈值,根据所述第二时刻之前每个内存操作对应的内存分配信息,生成所述目标进程在所述第二时刻对应的内存镜像文件。
6.根据权利要求4或5所述的方法,其特征在于,所述目标进程占用的内存大小为虚拟内存占用大小VmSize或物理内存占用大小VmRSS。
7.根据权利要求1所述的方法,其特征在于,根据每个内存操作对应的内存分配信息,生成内存镜像文件,包括:
接收用户输入的内存镜像文件生成指令;
通过响应所述内存镜像文件生成指令,根据所述内存镜像文件生成指令的响应时刻之前每个内存操作对应的内存分配信息,生成所述响应时刻对应的内存镜像文件。
8.根据权利要求1所述的方法,其特征在于,内存镜像文件中包括:
所述目标进程占用的VmSize和所述目标进程占用的VmRSS。
9.根据权利要求8所述的方法,其特征在于,所述目标进程占用的VmSize包括下述至少一种:
通过malloc函数分配的内存信息、通过mmap函数分配的内存信息、所述目标进程运行过程中未跟踪到的内存信息、确定所述目标进程运行过程中每个内存操作对应的内存分配信息所占用的内存信息、所述目标进程中的线程栈占用的内存信息。
10.根据权利要求8所述的方法,其特征在于,所述方法还包括:
解析内存镜像文件,以及按照预设展示方式对解析后的内存镜像文件进行展示。
11.根据权利要求10所述的方法,其特征在于,所述预设展示方式为按照时间分布进行展示;
按照预设展示方式对解析后的内存镜像文件进行展示,包括:
对所述目标进程运行过程中任一时间点下所述目标进程占用的VmSize和所述目标进程占用的VmRSS进行展示。
12.根据权利要求10所述的方法,其特征在于,所述预设展示方式为按照类别分布进行展示;
按照预设展示方式对解析后的内存镜像文件进行展示,包括:
对所述目标进程运行过程中占用的内存信息按照至少一个层级的类别进行分类展示。
13.根据权利要求10-12任一项所述的方法,其特征在于,按照预设展示方式对解析后的内存镜像文件进行展示,包括:
按照所述预设展示方式,使用超文本标记语言html文件对解析后的内存镜像文件进行展示。
14.根据权利要求1所述的方法,其特征在于,所述方法还包括:
根据每个内存操作对应的内存分配信息,生成内存日志文件。
15.根据权利要求1所述的方法,其特征在于,所述方法还包括:
根据内存镜像文件,检测所述目标进程运行过程中是否出现内存占用过大。
16.一种内存泄漏检测装置,其特征在于,包括:
内存Hook模块,用于通过Hook目标进程运行过程中每个内存操作对应的内存操作相关函数,确定每个内存操作对应的内存分配信息;
内存镜像...
【专利技术属性】
技术研发人员:喻世江,
申请(专利权)人:阿里巴巴集团控股有限公司,
类型:发明
国别省市:开曼群岛;KY
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。