一种基于Linux内核内存泄露的检测方法技术

技术编号:17442003 阅读:49 留言:0更新日期:2018-03-10 14:41
本发明专利技术提供了一种基于Linux内核内存泄露的检测方法,应用于内存泄露的检测,读取节点,获取每一个内存页分配函数的返回地址,以及分配分配函数对应分配的内存页的数量;于读取完成之后,释放节点统计的分配函数的返回地址以及分配函数对应分配的内存页的数量;再次读取节点,获取每一个分配函数的返回地址,以及分配函数对应分配的内存页的数量;将上述同一分配函数各自所对应分配的内存页的数量,并进行比较取得差值,在差值为正值且差值一直增大时,判断分配函数对应分配的内存页存在泄漏。其技术方案的有益效果在于,在检测内存是否存在泄露的过程中对内存的消耗较小且不影响不影响内存分配以及释放效率。

【技术实现步骤摘要】
一种基于Linux内核内存泄露的检测方法
本专利技术涉及通信
,尤其涉及一种基于Linux内核内存泄露的检测方法。
技术介绍
内存泄漏(MemoryLeak)是指程序中己动态分配的堆内存由于某种原因程序未释放或无法释放,造成系统内存的浪费,导致程序运行速度减慢甚至系统崩溃等严重后果。现有的在Linux系统中,对内存进行泄露检测具体是通过Kernel默认的memleak检测技术,当执行memleak检测方法之后,Kernel(内核)会在调用kmalloc、vmalloc、kmem_cache_alloc等函数的返回处跟踪其指针,连同其大小和堆栈跟踪信息,一并存储到PRIO搜索树中,当内核释放内存的时候,会通过kmemleak_free删除存储的跟踪信息。kernel会启动一个kmemleak_s的内核线程,周期性的扫描已经存储的对象信息,然后判断对象是否被引用进而确定是否存在内存泄漏。上述的memleak技术存在以下缺陷,在检测过程中需要周期性的扫描,会增加CPU消耗负担;在内存分配、释放的时候再次进行slab分配以记录内存对象的信息,这样会延长内存分配、释放的时间,降低系统效率本文档来自技高网...
一种基于Linux内核内存泄露的检测方法

【技术保护点】
一种基于Linux内核内存泄露的检测方法,应用于内存泄露的检测,所述内存包括多个内存页,其特征在于,创建一节点,通过所述节点统计每个所述内存页被调用的分配函数的返回地址,以及每个所述分配函数分配的所述内存页的数量;包括以下步骤:步骤S1、读取所述节点,获取每一个所述内存页所述分配函数的返回地址,以及所述分配分配函数对应分配的所述内存页的数量;步骤S2、于读取完成之后,释放所述节点统计的所述分配函数的返回地址以及所述分配函数对应分配的所述内存页的数量;步骤S3、再次读取所述节点,获取每一个所述分配函数的返回地址,以及所述分配函数对应分配的所述内存页的数量;步骤S4、获取所述步骤S3中与所述步骤S...

【技术特征摘要】
1.一种基于Linux内核内存泄露的检测方法,应用于内存泄露的检测,所述内存包括多个内存页,其特征在于,创建一节点,通过所述节点统计每个所述内存页被调用的分配函数的返回地址,以及每个所述分配函数分配的所述内存页的数量;包括以下步骤:步骤S1、读取所述节点,获取每一个所述内存页所述分配函数的返回地址,以及所述分配分配函数对应分配的所述内存页的数量;步骤S2、于读取完成之后,释放所述节点统计的所述分配函数的返回地址以及所述分配函数对应分配的所述内存页的数量;步骤S3、再次读取所述节点,获取每一个所述分配函数的返回地址,以及所述分配函数对应分配的所述内存页的数量;步骤S4、获取所述步骤S3中与所述步骤S1中同一所述分配函数各自所对应分配的所述内存页的数量,并进行比较取得差值;在所述差值为正值且所述差值一直增大时,判断所述分配函数对应分配的内存页存在泄漏。2.根据权利要求1所述的检测方法,其特征在于,每个所述内存页包括一数据结构,于所述数据结构中增加一地址返回标识,一分配阶数标志以及一内存类型的分配标识;所述地址返回标识用以记录内存分配时调用函数的地址;所述分配标识用以表示所述内存页被分配的内存类型。3.根据权利要求2所述的检测方法,其特征在于,在每次内存分配时保存调用函数信息时,通过内核栈检查函数调用链,所述调用链中依次保存有公共分配函数以及所述分配函数所对应的返回地址、分配参数以及分配阶数;获取所述调用链中顶层的所述分配函数所对应的所述返回地址、所述分配参数以及所述分配阶数;并将所述返回地址保存至所述地址返回标识中以及将所述分配参数以及所述分配阶数保存至所述内存页的数据结构中。4.根据权利要求2所述的检测方法,其特征在...

【专利技术属性】
技术研发人员:曾涛
申请(专利权)人:晶晨半导体上海股份有限公司
类型:发明
国别省市:上海,31

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

1