CN107783908A - 一种基于Linux内核内存泄露的检测方法 - Google Patents
一种基于Linux内核内存泄露的检测方法 Download PDFInfo
- Publication number
- CN107783908A CN107783908A CN201711085297.6A CN201711085297A CN107783908A CN 107783908 A CN107783908 A CN 107783908A CN 201711085297 A CN201711085297 A CN 201711085297A CN 107783908 A CN107783908 A CN 107783908A
- Authority
- CN
- China
- Prior art keywords
- page
- partition function
- return address
- distribution
- function
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/366—Software debugging using diagnostics
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3636—Software debugging by tracing the execution of the program
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/302—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5022—Mechanisms to release resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/865—Monitoring of software
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/88—Monitoring involving counting
Abstract
本发明提供了一种基于Linux内核内存泄露的检测方法,应用于内存泄露的检测,读取节点,获取每一个内存页分配函数的返回地址,以及分配分配函数对应分配的内存页的数量;于读取完成之后,释放节点统计的分配函数的返回地址以及分配函数对应分配的内存页的数量;再次读取节点,获取每一个分配函数的返回地址,以及分配函数对应分配的内存页的数量;将上述同一分配函数各自所对应分配的内存页的数量,并进行比较取得差值,在差值为正值且差值一直增大时,判断分配函数对应分配的内存页存在泄漏。其技术方案的有益效果在于,在检测内存是否存在泄露的过程中对内存的消耗较小且不影响不影响内存分配以及释放效率。
Description
技术领域
本发明涉及通信技术领域,尤其涉及一种基于Linux内核内存泄露的检测方法。
背景技术
内存泄漏(Memory Leak)是指程序中己动态分配的堆内存由于某种原因程序未释放或无法释放,造成系统内存的浪费,导致程序运行速度减慢甚至系统崩溃等严重后果。现有的在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中与所述步骤S1中同一所述分配函数各自所对应分配的所述内存页的数量,并进行比较取得差值;
在所述差值为正值且所述差值一直增大时,判断所述分配函数对应分配的内存页存在泄漏。
优选的,每个所述内存页包括一数据结构,于所述数据结构中增加一地址返回标识,一分配阶数以及一内存类型的分配标识;
所述地址返回标识用以记录内存分配时调用函数的地址;
所述分配标识用以表示所述内存页被分配的内存类型。
优选的,在每次内存分配时保存调用函数信息时,通过内核栈检查函数调用链,所述调用链中依次保存有公共分配函数以及所述分配函数所对应的返回地址、分配参数以及分配阶数;
获取所述调用链中顶层的所述分配函数所对应的所述返回地址、所述分配参数以及所述分配阶数;
并将所述返回地址保存至所述地址返回标识中以及将所述分配参数以及所述分配阶数保存至所述内存页面数据结构中。
优选的,所述内存中包括多个内存区,每个所述内存区由多个所述内存页形成,获取每个所述内存页的所述分配函数的方法,包括以下步骤:
步骤A1、按序读取每个所述内存区;
步骤A2、读取每个所述内存区中每个所述内存页所对应的所述数据结构,以获取每个所述内存页对应的所述分配函数对应的返回地址;
步骤A3、在所有所述内存区以及每个内存区中的所述内存页读取完成后,将获取的所有所述分配函数对应的返回地址,以及每个所述分配函数分配的所述内存页的数量形成一临时数组。
优选的,提供一打印模块,通过所述打印模块将所述临时数组中保存的每个所述分配函数、所述分配函数对应的返回地址以及所述分配函数对应分配的所述内存页的数量打印显示于一界面中。
优选的,在所述步骤A2中,提供一临时记录数组,用以保存读取的所述内存页对应的所述分配函数的返回地址;
在所述步骤A2中,还包括以下步骤:
步骤A21、判断所有的内存页是否读取完成;
若是,表示所有的所述内存页读取完成,退出;
步骤A22、读取下一所述内存页时将读取的分配函数对应的返回地址与所述临时记录数组中的返回地址进行匹配;
步骤A23、若匹配相同,则对当前的所述分配函数分配的内存页的数量加1,并返回步骤A21;
步骤A24、若匹配不同,则将所述内存页对应的所述分配函数的返回地址保存于所述临时记录数组中,并返回步骤A21。
优选的,当所述内存页被释放时,将保存在所述地址返回标识中的返回地址以及保存在所述数据结构中的所述分配参数以及所述分配阶数清空。
优选的,提供一宏配置模块用以配置形成所述地址返回标识。
上述技术方案具有如下优点或有益效果:在检测内存是否存在泄露的过程中对内存的消耗较小且不影响不影响内存分配以及释放效率,克服了现有技术中通过Kernel默认的memleak检测技术在执行检测过程中需要周期性的扫描,增加CPU消耗负担以及在内存分配、释放的时候再次进行slab分配以记录内存对象的信息,会延长内存分配、释放的时间,降低系统效率的问题。
附图说明
参考所附附图,以更加充分的描述本发明的实施例。然而,所附附图仅用于说明和阐述,并不构成对本发明范围的限制。
图1为本发明一种基于Linux内核内存泄露的检测方法的实施例的流程图;
图2为本发明一种基于Linux内核内存泄露的检测方法的实施例中,关于获取每个所述内存页的所述分配函数的方法的流程图;
图3为本发明一种基于Linux内核内存泄露的检测方法的实施例中,关于获取每个所述内存页的所述分配函数的方法的流程图;
图4为本发明一种基于Linux内核内存泄露的检测方法的实施例中,关于内核内存分配API调用关系图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。
下面结合附图和具体实施例对本发明作进一步说明,但不作为本发明的限定。
本发明的技术方案中包括一种基于Linux内核内存泄露的检测方法。
一种基于Linux内核内存泄露的检测方法的实施例,应用于内存泄露的检测,内存包括多个内存页,其中,创建一节点,通过节点统计每个内存页被调用的分配函数的返回地址,以及每个分配函数分配的内存页的数量;
如图1所示,包括以下步骤:
步骤S1、读取节点,获取每一个内存页分配函数的返回地址,以及分配分配函数对应分配的内存页的数量;
步骤S2、于读取完成之后,释放节点统计的分配函数的返回地址以及分配函数对应分配的内存页的数量;
步骤S3、再次读取节点,获取每一个分配函数的返回地址,以及分配函数对应分配的内存页的数量;
步骤S4、获取步骤S3中与步骤S1中同一分配函数各自所对应分配的内存页的数量,并进行比较取得差值;
在差值为正值且差值一直增大时,判断分配函数对应分配的内存页存在泄漏。
针对现有的在Linux系统中,通过Kernel默认的memleak检测技术对内存进行泄露检测,通常在检测过程中需要周期性的扫描,会增加CPU消耗负担;在内存分配、释放的时候再次进行slab分配以记录内存对象的信息,这样会延长内存分配、释放的时间,降低系统效率,如果内核分配的对象比较多的时候,kmemcache的slab会消耗掉很多内存;
举例说明典型的2GB的Android平台,如果打开kmemleak配置,boot启动之后kmemleak的slab会消耗82MB左右的内存,这显然是一个极大的浪费。
本发明中,通过创建的节点在获取每个内存页对应的分配函数的返回地址,以及分配函数对应分配的内存页的数量,假设获取的分配函数为A1、A2、A3以及A4;函数A1、A2、A3、A4所对应的内存页的分配数量分别为100、200、300、400;
在对统计的分配函数的返回地址以及分配函数对应分配的内存页数量释放之后,再次读取访问节点,将再次统计获得的分配函数以及分配函数对应的内存页的分配数量,假设获取的函数为A1、A2、A3以及A4;
函数A1、A2、A3、A4所对应的内存页的分配数量分别为300、400、500、600;
通过将再次获取的分配函数A1与上一次获取的分配函数A1进行比较获得差值,当差值大于零,且差值一直增大则表示当前的分配函数对应分配的内存页存在泄漏;
若持平,或者差值小于零,且一直处于较小的状态,则表示当前分配函数对应分配的内存页正常。
在一种较优的实施方式中,如图4所示,每个内存页包括一数据结构,于数据结构中增加一地址返回标识用_ret_ip表示,一分配阶数标志以及一内存类型的分配标识用alloc_mask表示;
所述地址返回标识用以记录内存分配时调用函数的地址,这个调用函数名称即可用来确认内存分配者的身份信息;
分配标识用以表示内存页被分配的内存类型。
上述技术方案中,每个内存页的数据结构即(struct pag结构)中增加的地址返回标识以及内存类型的分配标识,只增加一个long和int型成员,在64bit(位)体系中即增加了12个字节,对于具体的在2GB内存系统上,总体只增加了6MB的内存。相对于kmemleak增加的82MB的slab数据来说,大大减少了内存消耗。
在一种较优的实施方式中,在每次内存分配时保存调用函数信息时,通过内核栈检查函数调用链,调用链中依次保存有公共分配函数以及分配函数所对应的返回地址、分配参数以及分配阶数;
获取调用链中顶层的分配函数所对应的返回地址、分配参数以及分配阶数;
并将返回地址保存至地址返回标识中以及将分配参数以及分配阶数保存至内存页的数据结构中。
上述技术方案中,分配阶数包括每个分配函数所要分配的内存页的数量,通常用2k表示,每个内存页的大小为4KB,分配参数中包括当前分配参数分配的内存的类型。
在一种较优的实施方式中,内存中包括多个内存区,每个内存区由多个内存页形成,获取每个内存页的分配函数的方法,如图2所示,包括以下步骤:
步骤A1、按序读取每个内存区;
步骤A2、读取每个内存区中每个内存页所对应的数据结构,以获取每个内存页对应的分配函数对应的返回地址;
步骤A3、在所有内存区以及每个内存区中的内存页读取完成后,将获取的所有分配函数对应的返回地址,以及每个分配函数分配的内存页的数量形成一临时数组。
在一种较优的实施方式中,提供一打印模块,通过打印模块将临时数组中保存的每个分配函数、分配函数对应的返回地址以及分配函数对应分配的内存页的数量打印显示于一界面中。
在一种较优的实施方式中,提供一临时记录数组,用以保存读取的内存页对应的分配函数的返回地址;
如图3所示,在步骤A2中,还包括以下步骤:
步骤A21、判断当前的内存区中的所有的内存页是否读取完成;
若是,表示所有的内存页读取完成,退出;
步骤A22、读取下一内存页时将读取的分配函数对应的返回地址与临时记录数组中的返回地址进行匹配;
步骤A23、若匹配相同,则对当前的分配函数分配的内存页的数量加1,并返回步骤A21;
步骤A24、若匹配不同,则将内存页对应的分配函数的返回地址保存于临时记录数组中,并返回步骤A21。
上述技术方案中,每个内存区用zone表示,zone中保存有多个内存页,每个内存页中包括struct pag结构,在读取内存区时,首先从zone的start_pfn到end_pfn,根据pfn获得内存页的struct page结构,然后从struct page结构中找出_ret_ip(分配函数对应的返回地址),并根据_ret_ip在一个临时记录ret_ip的数组中查找,如果没有匹配项,则这是一个新的_ret_ip,记录它并根据这个page的分配order(阶数)增加它的分配次数,如此顺序循环完所有的page和所有的zone。
可以得到一个记录所有分配者的返回地址的_ret_ip以及总计分配次数的临时数组;最后将其打印出来,完成对节点(/proc/pagetrace)的读取功能。
在一种较优的实施方式中,当内存页被释放时,将保存在地址返回标识中的返回地址以及保存在分配标识中的分配参数以及分配阶数清空。
上述技术方案中,当对分配函数分配的内存进行释放时,若内存页中保存在地址返回标识中的返回地址,以及保存在分配标识中的分配参数以及分配阶数被清空后,则表示当前的内存页释放完成,没有被分配函数所调用。
在一种较优的实施方式中,提供一宏配置模块用以配置形成地址返回标识。
上述技术方案中,Linux环境下,可通过宏配置模块即宏_RET_IP_获得编译器支持的函数的返回地址,即得到__alloc_pages_nodemask函数的调用者。
以上所述仅为本发明较佳的实施例,并非因此限制本发明的实施方式及保护范围,对于本领域技术人员而言,应当能够意识到凡运用本发明说明书及图示内容所作出的等同替换和显而易见的变化所得到的方案,均应当包含在本发明的保护范围内。
Claims (8)
1.一种基于Linux内核内存泄露的检测方法,应用于内存泄露的检测,所述内存包括多个内存页,其特征在于,创建一节点,通过所述节点统计每个所述内存页被调用的分配函数的返回地址,以及每个所述分配函数分配的所述内存页的数量;
包括以下步骤:
步骤S1、读取所述节点,获取每一个所述内存页所述分配函数的返回地址,以及所述分配分配函数对应分配的所述内存页的数量;
步骤S2、于读取完成之后,释放所述节点统计的所述分配函数的返回地址以及所述分配函数对应分配的所述内存页的数量;
步骤S3、再次读取所述节点,获取每一个所述分配函数的返回地址,以及所述分配函数对应分配的所述内存页的数量;
步骤S4、获取所述步骤S3中与所述步骤S1中同一所述分配函数各自所对应分配的所述内存页的数量,并进行比较取得差值;
在所述差值为正值且所述差值一直增大时,判断所述分配函数对应分配的内存页存在泄漏。
2.根据权利要求1所述的检测方法,其特征在于,每个所述内存页包括一数据结构,于所述数据结构中增加一地址返回标识,一分配阶数标志以及一内存类型的分配标识;
所述地址返回标识用以记录内存分配时调用函数的地址;
所述分配标识用以表示所述内存页被分配的内存类型。
3.根据权利要求2所述的检测方法,其特征在于,在每次内存分配时保存调用函数信息时,通过内核栈检查函数调用链,所述调用链中依次保存有公共分配函数以及所述分配函数所对应的返回地址、分配参数以及分配阶数;
获取所述调用链中顶层的所述分配函数所对应的所述返回地址、所述分配参数以及所述分配阶数;
并将所述返回地址保存至所述地址返回标识中以及将所述分配参数以及所述分配阶数保存至所述内存页的数据结构中。
4.根据权利要求2所述的检测方法,其特征在于,所述内存中包括多个内存区,每个所述内存区由多个所述内存页形成,获取每个所述内存页的所述分配函数的方法,包括以下步骤:
步骤A1、按序读取每个所述内存区;
步骤A2、读取每个所述内存区中每个所述内存页所对应的所述数据结构,以获取每个所述内存页对应的所述分配函数对应的返回地址;
步骤A3、在所有所述内存区以及每个内存区中的所述内存页读取完成后,将获取的所有所述分配函数对应的返回地址,以及每个所述分配函数分配的所述内存页的数量形成一临时数组。
5.根据权利要求4所述的检测方法,其特征在于,提供一打印模块,通过所述打印模块将所述临时数组中保存的每个所述分配函数、所述分配函数对应的返回地址以及所述分配函数对应分配的所述内存页的数量打印显示于一界面中。
6.根据权利要求4所述的检测方法,其特征在于,提供一临时记录数组,用以保存读取的所述内存页对应的所述分配函数的返回地址;
在所述步骤A2中,还包括以下步骤:
步骤A21、判断所有的内存页是否读取完成;
若是,表示所有的所述内存页读取完成,退出;
步骤A22、读取下一所述内存页时将读取的分配函数对应的返回地址与所述临时记录数组中的返回地址进行匹配;
步骤A23、若匹配相同,则对当前的所述分配函数分配的内存页的数量加1,并返回步骤A21;
步骤A24、若匹配不同,则将所述内存页对应的所述分配函数的返回地址保存于所述临时记录数组中,并返回步骤A21。
7.根据权利要求3所述的检测方法,其特征在于,当所述内存页被释放时,将保存在所述地址返回标识中的返回地址以及保存在所述数据结构中的所述分配参数以及所述分配阶数清空。
8.根据权利要求2所述的检测方法,其特征在于,提供一宏配置模块用以配置形成所述地址返回标识。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711085297.6A CN107783908B (zh) | 2017-11-07 | 2017-11-07 | 一种基于Linux内核内存泄露的检测方法 |
PCT/CN2018/108103 WO2019091244A1 (zh) | 2017-11-07 | 2018-09-27 | 一种基于Linux内核内存泄露的检测方法 |
US16/325,175 US11157389B1 (en) | 2017-11-07 | 2018-09-27 | Method for detecting memory leak based on linux kernel |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711085297.6A CN107783908B (zh) | 2017-11-07 | 2017-11-07 | 一种基于Linux内核内存泄露的检测方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107783908A true CN107783908A (zh) | 2018-03-09 |
CN107783908B CN107783908B (zh) | 2020-12-25 |
Family
ID=61433035
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711085297.6A Active CN107783908B (zh) | 2017-11-07 | 2017-11-07 | 一种基于Linux内核内存泄露的检测方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11157389B1 (zh) |
CN (1) | CN107783908B (zh) |
WO (1) | WO2019091244A1 (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2019091244A1 (zh) * | 2017-11-07 | 2019-05-16 | 晶晨半导体(上海)股份有限公司 | 一种基于Linux内核内存泄露的检测方法 |
CN111352734A (zh) * | 2020-02-26 | 2020-06-30 | 烽火通信科技股份有限公司 | 一种内存泄漏检测方法及内存管理模块 |
CN112631941A (zh) * | 2020-12-31 | 2021-04-09 | 广州鲁邦通物联网科技有限公司 | 定位linux内核slub内存泄漏的方法和系统 |
WO2023284877A1 (zh) * | 2021-07-16 | 2023-01-19 | 维沃移动通信有限公司 | 检测方法、装置及电子设备 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113157455A (zh) * | 2021-04-27 | 2021-07-23 | 腾讯科技(深圳)有限公司 | 内存管理方法、装置、电子设备及计算机可读存储介质 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101615143A (zh) * | 2008-06-27 | 2009-12-30 | 国际商业机器公司 | 用于内存泄漏诊断的方法和装置 |
US20140189438A1 (en) * | 2012-12-31 | 2014-07-03 | Bmc Software, Inc. | Memory leak detection |
US20150029792A1 (en) * | 2013-07-26 | 2015-01-29 | SK Hynix Inc. | Semiconductor memory device and method of operating the same |
CN104572460A (zh) * | 2014-12-30 | 2015-04-29 | 大唐移动通信设备有限公司 | 一种内存泄露的检测方法和装置 |
CN105205409A (zh) * | 2015-09-14 | 2015-12-30 | 浪潮电子信息产业股份有限公司 | 一种防止内存复用中数据泄露的方法及计算机系统 |
CN105260314A (zh) * | 2015-11-03 | 2016-01-20 | 上海斐讯数据通信技术有限公司 | 内存泄漏的监测方法 |
CN106407031A (zh) * | 2016-09-14 | 2017-02-15 | 华为数字技术(成都)有限公司 | 一种内存泄露定位方法及电子设备 |
CN106991010A (zh) * | 2017-03-22 | 2017-07-28 | 武汉虹信通信技术有限责任公司 | 一种用于流媒体服务器的内存集中动态分配方法 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7472144B2 (en) * | 2003-07-28 | 2008-12-30 | International Business Machines Corporation | Method and system for resolving memory leaks and releasing obsolete resources from user session data |
US7293142B1 (en) * | 2004-04-19 | 2007-11-06 | Cisco Technology, Inc. | Memory leak detection system and method using contingency analysis |
US7487321B2 (en) * | 2004-04-19 | 2009-02-03 | Cisco Technology, Inc. | Method and system for memory leak detection |
US7519867B2 (en) * | 2004-12-21 | 2009-04-14 | National Instruments Corporation | Test executive which provides heap validity checking and memory leak detection for user code modules |
US7895483B2 (en) * | 2007-05-25 | 2011-02-22 | International Business Machines Corporation | Software memory leak analysis using memory isolation |
US8209510B1 (en) * | 2010-01-13 | 2012-06-26 | Juniper Networks, Inc. | Secure pool memory management |
US9092318B2 (en) * | 2012-02-06 | 2015-07-28 | Vmware, Inc. | Method of allocating referenced memory pages from a free list |
CN102819497B (zh) | 2012-05-31 | 2015-09-30 | 华为技术有限公司 | 一种内存分配方法、装置及系统 |
CN102866947A (zh) | 2012-08-29 | 2013-01-09 | 深圳市共进电子股份有限公司 | 一种Linux内核内存泄漏的检测方法 |
CN107220181B (zh) | 2017-06-16 | 2020-01-14 | 瑞斯康达科技发展股份有限公司 | 一种异常进程定位方法、装置及系统 |
CN107783908B (zh) * | 2017-11-07 | 2020-12-25 | 晶晨半导体(上海)股份有限公司 | 一种基于Linux内核内存泄露的检测方法 |
-
2017
- 2017-11-07 CN CN201711085297.6A patent/CN107783908B/zh active Active
-
2018
- 2018-09-27 WO PCT/CN2018/108103 patent/WO2019091244A1/zh active Application Filing
- 2018-09-27 US US16/325,175 patent/US11157389B1/en active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101615143A (zh) * | 2008-06-27 | 2009-12-30 | 国际商业机器公司 | 用于内存泄漏诊断的方法和装置 |
US20140189438A1 (en) * | 2012-12-31 | 2014-07-03 | Bmc Software, Inc. | Memory leak detection |
US20150029792A1 (en) * | 2013-07-26 | 2015-01-29 | SK Hynix Inc. | Semiconductor memory device and method of operating the same |
CN104572460A (zh) * | 2014-12-30 | 2015-04-29 | 大唐移动通信设备有限公司 | 一种内存泄露的检测方法和装置 |
CN105205409A (zh) * | 2015-09-14 | 2015-12-30 | 浪潮电子信息产业股份有限公司 | 一种防止内存复用中数据泄露的方法及计算机系统 |
CN105260314A (zh) * | 2015-11-03 | 2016-01-20 | 上海斐讯数据通信技术有限公司 | 内存泄漏的监测方法 |
CN106407031A (zh) * | 2016-09-14 | 2017-02-15 | 华为数字技术(成都)有限公司 | 一种内存泄露定位方法及电子设备 |
CN106991010A (zh) * | 2017-03-22 | 2017-07-28 | 武汉虹信通信技术有限责任公司 | 一种用于流媒体服务器的内存集中动态分配方法 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2019091244A1 (zh) * | 2017-11-07 | 2019-05-16 | 晶晨半导体(上海)股份有限公司 | 一种基于Linux内核内存泄露的检测方法 |
CN111352734A (zh) * | 2020-02-26 | 2020-06-30 | 烽火通信科技股份有限公司 | 一种内存泄漏检测方法及内存管理模块 |
CN112631941A (zh) * | 2020-12-31 | 2021-04-09 | 广州鲁邦通物联网科技有限公司 | 定位linux内核slub内存泄漏的方法和系统 |
CN112631941B (zh) * | 2020-12-31 | 2022-04-19 | 广州鲁邦通物联网科技股份有限公司 | 定位linux内核slub内存泄漏的方法和系统 |
WO2023284877A1 (zh) * | 2021-07-16 | 2023-01-19 | 维沃移动通信有限公司 | 检测方法、装置及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN107783908B (zh) | 2020-12-25 |
WO2019091244A1 (zh) | 2019-05-16 |
US20210334192A1 (en) | 2021-10-28 |
US11157389B1 (en) | 2021-10-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107783908A (zh) | 一种基于Linux内核内存泄露的检测方法 | |
CN101238441B (zh) | 计算装置中的可抢占语境切换方法 | |
CN101005486B (zh) | 一种资源访问控制方法及系统 | |
EP2921963B1 (en) | Memory recycling method and device | |
TW445405B (en) | Computer system with power management scheme for DRAM devices | |
CN103336744B (zh) | 一种固态存储设备的垃圾回收方法及其系统 | |
CN103246613B (zh) | 缓存装置及用于缓存装置的缓存数据获取方法 | |
CN1996258A (zh) | 一种动态内存池的实现方法 | |
CN111324303B (zh) | Ssd垃圾回收方法、装置、计算机设备及存储介质 | |
CN103440207A (zh) | 缓存方法及装置 | |
CN102866947A (zh) | 一种Linux内核内存泄漏的检测方法 | |
Zhou et al. | I/O characteristics of smartphone applications and their implications for eMMC design | |
CN106502587A (zh) | 磁盘数据管理方法和磁盘控制装置 | |
CN110413521A (zh) | 一种堆内存的写越界检测方法和装置 | |
CN102063338A (zh) | 一种请求独占资源的方法及装置 | |
CN103049396A (zh) | 数据的刷写方法及装置 | |
CN102799390B (zh) | 能耗感知的协同式自适应预取方法和装置 | |
CN107817945A (zh) | 一种混合内存结构的数据读取方法和系统 | |
CN112506823A (zh) | 一种fpga数据读写方法、装置、设备及可读存储介质 | |
CN101645802B (zh) | 内容控制方法及装置 | |
CN107608639A (zh) | 基于闪存的队列式循环存储方法、电子设备和存储介质 | |
CN103927203A (zh) | 一种计算机系统及控制方法 | |
CN106598736A (zh) | 一种内存池的内存块调用方法和释放方法及服务器 | |
CN100431051C (zh) | 一种在nor flash中配置参数的方法 | |
CN108829345A (zh) | 日志文件的数据处理方法和终端设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |