CN104965779A - 一种基于PoolMon的内存泄露检测和定位的方法及装置 - Google Patents
一种基于PoolMon的内存泄露检测和定位的方法及装置 Download PDFInfo
- Publication number
- CN104965779A CN104965779A CN201510264114.1A CN201510264114A CN104965779A CN 104965779 A CN104965779 A CN 104965779A CN 201510264114 A CN201510264114 A CN 201510264114A CN 104965779 A CN104965779 A CN 104965779A
- Authority
- CN
- China
- Prior art keywords
- memory
- program
- detected
- ram leakage
- label
- 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.)
- Pending
Links
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明提供一种基于PoolMon的内存泄露检测和定位的方法及装置,该方法包括:将待检测程序运行在系统上,对该程序的各个操作进行反复循环执行,检测所述各个操作反复循环执行过程中系统内存占用情况,根据所述系统内存占用情况,判断所述待检测程序是否发生内存泄露,根据判断结果,如果发生内存泄露,将所述待检测程序运行在至少一个系统上,每个系统上反复循环执行所述待检测程序的其中一个操作,在对应的系统上执行各操作过程中,通过所述PoolMon采集每个操作对应的各个内存标签的访问记录数据,并形成采集文件,分析所述采集文件,确定导致内存泄露的内存标签。本方案能够提高检测和定位内存泄露的效率。
Description
技术领域
本发明涉及软件测试领域,特别涉及一种基于PoolMon的内存泄露检测和定位的方法及装置。
背景技术
内存泄露是由于疏忽或错误造成程序未能释放已经不再使用的内存,随后这部分内存不能进行重新分配,随着时间的推移,不断为程序分配新的内存,由于系统可用内存不断减少,系统将出现卡顿的现象,最终由于系统内存池耗尽,系统中止运行,对于用户来说,系统中止运行是不可接受,可能带来巨大的损失,所以程序在交付用户使用之前,需要检测其是否存在内存泄露的情况,如果存在则需要确定具体是哪部分导致内存泄露,并进行修复。
目前,对于程序内存泄露的检测,主要是通过程序运行过程中消耗的内存值,确定程序是否存在内存泄露的情况,如果存在,则对整个程序进行检查修改。
针对目前这种内存泄露检测的方法,由于各种原因会导致程序消耗内存发生变化,单纯通过程序消耗的内存来判断出现内存泄露具有很大的误差,而且,发现存在内存泄露的情况后,对整个程序进行修改,需要很长的时间寻找导致内存泄露原因,程序开发人员工作效率低。
发明内容
本发明提供一种基于PoolMon的内存泄露检测和定位的方法及装置,能够提高检测和定位内存泄露的效率。
本发明实施例提供了一种基于PoolMon的内存泄露检测和定位的方法,包括:
将待检测程序运行在系统上,对该程序的各个操作进行反复循环执行,直至达到第一预设时间停止待检测程序的运行;
检测所述各个操作反复循环执行过程中及执行前和执行完毕后系统内存的占用情况;
根据所述系统内存占用情况,判断所述待检测程序是否发生内存泄露;
根据判断结果,如果发生内存泄露,将所述待检测程序运行在至少一个系统上,每个系统上反复循环执行所述待检测程序的其中一个操作,直至达到第二预设时间停止待检测程序的运行,其中,所述系统数量与所述待检测程序的操作数量相同,且每个所述系统上执行的操作互不相同;
在对应的系统上执行各操作过程中,通过所述PoolMon采集每个操作对应的各个内存标签的访问记录数据,并形成采集文件;
分析所述采集文件,确定导致内存泄露的内存标签。
优选地,所述在对应的系统上执行各操作过程中,通过所述PoolMon采集每个操作对应的各个内存标签的访问记录数据包括:从开始执行所述各操作起,在每个系统上,每经过一个间隔时间,通过所述PoolMon采集一次各个内存标签的访问记录数据,直至达到所述第二预设时间。
优选地,所述间隔时间小于所述第二预设时间。
优选地,所述根据所述系统内存占用情况,判断所述待检测程序是否发生内存泄露包括:如果所述各个操作反复循环执行过程中系统内存占用不断增加,且所述待检测程序停止运行后系统内存占用与初始系统内存占用之差大于第一预定值,则判断为所述待检测程序发生内存泄露,否则判断为不发生内存泄露。
优选地,所述分析所述采集文件,确定导致内存泄露的内存标签包括:根据所述采集文件中记录的数据,如果所述内存标签的内存占用不断增加,且停止执行对应操作后所述内存标签的内存占用与初始内存标签的内存占用之差大于第二预定值,则确定该内存标签导致内存泄露。
本发明实施例还提供了一种基于PoolMon的内存泄露检测和定位的装置,包括:
第一执行单元,用于将待检测程序运行在系统上,对该程序的各个操作进行反复循环执行,直至达到第一预设时间停止待检测程序的运行;
检测单元,用于检测所述第一执行单元对各个操作反复循环执行过程中及执行前和执行完毕后系统内存的占用情况;
判断单元,用于根据所述检测单元检测出的系统内存占用情况,判断所述待检测程序是否发生内存泄露;
第二执行单元,用于根据所述判断单元做出的判断结果,如果发生内存泄露,将所述待检测程序运行在至少一个系统上,每个系统上反复循环执行所述待检测程序的其中一个操作,直至达到第二预设时间停止待检测程序的运行,其中,所述系统数量与所述待检测程序的操作数量相同,且每个所述系统上执行的操作互不相同;
采集单元,用于所述第二执行单元在对应的系统上执行各操作过程中,通过所述PoolMon采集每个操作对应的各个内存标签的访问记录数据,并形成采集文件;
分析单元,用于分析所述采集单元形成的采集文件,确定导致内存泄露的内存标签。
优选地,所述采集单元,用于从开始执行所述各操作起,在每个系统上,每经过一个间隔时间,通过所述PoolMon采集一次各个内存标签的访问记录数据,直至达到所述第二预设时间。
优选地,所述判断单元,用于如果所述各个操作反复循环执行过程中系统内存占用不断增加,且所述待检测程序停止运行后系统内存占用与初始系统内存占用之差大于第一预定值,则判断为所述待检测程序发生内存泄露,否则判断为不发生内存泄露。
优选地,所述分析单元,用于根据所述采集文件中记录的数据,如果所述内存标签的内存占用不断增加,且停止执行对应操作后所述内存标签的内存占用与初始内存标签的内存占用之差大于第二预定值,则确定该内存标签导致内存泄露。
本发明实施例提供了一种基于PoolMon的内存泄露检测和定位的方法及装置,将待检测的程序运行在一个系统上,对该程序的各个操作进行反复循环执行足够的时间,在执行操作过程中检测系统内存的占用情况,根据系统内存的占用情况判断该程序是否发生内存泄露,如果发生内存泄露,则将该程序的各个操作分别在不同的系统上反复循环执行足够的时间,并通过PoolMon采集操作执行过程中各个操作对应的内存标签的访问记录数据,通过分析内存标签的访问记录数据,确定出导致内存泄露的内存标签,这样,首先检测待检测程序是否存在内存泄露的情况,如果存在则对导致内存泄露的内存标签进行定位,便于程序开发人员对程序的修改,从而提高检测和定位内存泄露的效率。
附图说明
图1是本发明实施例提供的一种基于PoolMon的内存泄露检测和定位的方法流程图;
图2是本发明另一个实施例提供的一种基于PoolMon的内存泄露检测和定位的方法流程图;
图3是本发明实施例提供的一种基于PoolMon的内存泄露检测和定位的装置示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图1所示,本发明一个实施例提供了一种基于PoolMon的内存泄露检测和定位的方法,该可以包括以下步骤:
步骤101:将待检测程序运行在系统上,对该程序的各个操作进行反复循环执行,直至达到第一预设时间停止待检测程序的运行;
步骤102:检测所述各个操作反复循环执行过程中及执行前和执行完毕后系统内存的占用情况;
步骤103:根据所述系统内存占用情况,判断所述待检测程序是否发生内存泄露;
步骤104:根据判断结果,如果发生内存泄露,将所述待检测程序运行在至少一个系统上,每个系统上反复循环执行所述待检测程序的其中一个操作,直至达到第二预设时间停止待检测程序的运行,其中,所述系统数量与所述待检测程序的操作数量相同,且每个所述系统上执行的操作互不相同;
步骤105:在对应的系统上执行各操作过程中,通过所述PoolMon采集每个操作对应的各个内存标签的访问记录数据,并形成采集文件;
步骤106:分析所述采集文件,确定导致内存泄露的内存标签。
本发明实施例提供了一种基于PoolMon的内存泄露检测和定位的方法,将待检测的程序运行在一个系统上,对该程序的各个操作进行反复循环执行足够的时间,在执行操作过程中检测系统内存的占用情况,根据系统内存的占用情况判断该程序是否发生内存泄露,如果发生内存泄露,则将该程序的各个操作分别在不同的系统上反复循环执行足够的时间,并通过PoolMon采集操作执行过程中各个操作对应的内存标签的访问记录数据,通过分析内存标签的访问记录数据,确定出导致内存泄露的内存标签,这样,首先检测待检测程序是否存在内存泄露的情况,如果存在则对导致内存泄露的内存标签进行定位,便于程序开发人员对程序的修改,从而提高检测和定位内存泄露的效率。
在本发明一个实施例中,在对待检测程序的各个操作分别进行执行过程中,每经过一个间隔时间,通过PoolMon采集一次每个操作对应的多个内存标签的访问记录数据,直至操作执行完毕,这样将获得一系列针对各个内存标签的访问记录数据,通过分析这些数据可以确定对应的内存标签是否发生内存泄露。
在本发明一个实施例中,在对各个操作分别进行执行过程中,每经过一个间隔时间,通过PoolMon采集一次数据,其中,操作的执行时间要足够长,保证内存泄露的累计量,而且间隔时间不能太长,确保有足够的数据进行分析,从而能够准确判断导致内存泄露的内存标签。
在本发明一个实施例中,待检测程序的各个操作在同一个系统上执行过程中,如果随着操作执行过程的继续,系统的内存占用不断增加,而且当所有操作停止执行后系统的内存占用任比初始系统内存占用大很多,则可以判断该程序发生了内存泄露,需要进行修复,否则判断该程序没有发生内存泄露,不需要修复。
在本发明一个实施例中,将通过PoolMon采集的数据形成采集文件,以便于对采集文件中数据进行分析,通过分析采集文件中的数据,如果内存标签的内存占用随着对应操作的不断执行而不断增大,而且停止执行对应的操作后内存标签占用的内存仍比操作执行之前内存标签占用的内存大很多,则可以确定该内存标签导致内存泄露,从而实现了对于内存泄露原因的准确定位。
为使本发明的目的、技术方案和优点更加清楚,下面结合附图及具体实施例对本发明作进一步地详细描述。
如图2所示,本发明一个实施例提供了一种基于PoolMon的内存泄露检测和定位的方法,该可以包括以下步骤:
步骤201:将待检测程序运行在一个纯净的系统上。
在本发明一个实施例中,将待检测的程序运行在一个没有其他应用程序的纯净系统上,例如,将待检测程序运行在一个纯净的Windows系统上,该系统上没有其他的应用程序。
步骤202:将待检测程序的所有操作进行反复循环执行,直至达到设定的时间。
在本发明一个实施例中,设定一个执行时间,在该执行时间内对待检测程序的所有操作进行反复循环执行。例如,设定执行时间为5小时,待检测程序包括3个操作,分别为操作A、操作B和操作C,反复循环执行操作A、操作B和操作C,直至达到5个小时的执行时间。
步骤203:检测所有操作反复循环执行过程中及执行前和执行完毕后系统内存的占用情况。
在本发明一个实施例中,首先在执行各操作之间,检测并记录系统内存的占用情况,然后在执行各操作的过程中及执行完毕后,同样检测并记录系统内存的占用情况。例如,通过资源管理器,检测并记录系统的初始内存占用情况,然后系统对操作A、操作B和操作C反复循环执行5小时,在此过程中,每经过1小时检测一次系统内存的占用情况并进行记录,最后停止对操作A、操作B和操作C的执行,检测并记录停止执行操作后系统的内存占用情况,此过程中共对系统内存的占用情况进行7次检测和记录。
步骤204:根据系统内存占用情况,判断待检测程序是否发生内存泄露,如果是则执行步骤205,如果否则结束当前流程。
在本发明一个实施例中,如果在执行各操作过程中,系统内存占用越来越大,而且当停止各个操作执行后,系统内存占用与初始系统内存占用之差大于预定值,则判断待检测程序发生内存泄露,执行步骤205,如果在执行各操作过程中,系统内存占用变化不明显,且停止执行各操作后系统内存占用与初始系统内存占用之差小于预定值,则判断待检测程序没有发生内存泄露,结束当前流程。例如,系统初始内存占用为5GB,设定内存减少预定值为2GB,对操作A、操作B和操作C执行5小时过程中,系统内存占用不断增加,最后系统内存占用为20GB,停止对操作A、操作B和操作C的执行后,系统内存占用为19GB,此时系统内存占用与初始系统内存占用之差为14GB,大于2GB,那么就可以判断待检测程序发生了内存泄露,然后执行步骤205;如果对操作A、操作B和操作C执行5小时过程中系统内存占用在10GB上下波动,停止对操作A、操作B和操作C的执行后,系统内存占用为6GB,此时系统内存占用与初始系统内存占用之差为1GB,那么可以判断待检测现在没有发生内存泄露,结束当前流程。
步骤205:根据待检测程序包括操作的数量,将待检测程序运行在多个纯净的系统上。
在本发明一个实施例中,将待检测的程序运行在多个纯净的系统上,系统数量与待检测程序包括的操作的数量相同。例如,待检测程序包括操作A、操作B和操作C共3个操作,那么就将待检测程序运行在三个纯净的系统上,分别为系统1、系统2和系统3。
步骤206:在每个系统上反复循环执行待检测程序的一个操作,直至达到设定的时间,其中,每个系统上执行的操作互不相同。
在本发明一个实施例中,分别在每个系统上执行待检测程序的一个操作,而且每个系统上执行的操作互不相同,反复执行各个系统上对应的操作,直至达到设定的执行时间。例如,设定执行时间为5个小时,在这期间,分别在在系统1上反复循环执行操作A,在系统2上反复循环执行操作B,在系统3上反复循序执行操作C。
步骤207:各系统执行操作过程中,每经过一个间隔时间,通过PoolMon采集一次各个操作对应内存标签的访问记录数据。
在本发明一个实施例中,设定间隔时间,在各个系统上分别执行对应的操作过程中,每经过一个间隔时间,通过PoolMon采集一次操作对应的多个内存标签的访问记录数据,直至操作执行结束。例如,操作A对应有10个内存标签,分别为内存标签A1至内存标签A10,操作B对应有10个内存标签,分别为内存标签B1至内存标签B10,操作C对应有10个内存标签,分别为内存标签C1至内存标签C10,设定间隔时间为10分钟,每经过10分钟,在系统1上通过PoolMon采集内存标签A1至内存标签A10的访问记录数据,在系统2上通过PoolMon采集内存标签B1至内存标签B10的访问记录数据,在系统3上通过PoolMon采集内存标签C1至内存标签C10的访问记录数据,并在达到5小时停止各操作执行后,再次采集所有内存标签的访问记录数据。
步骤208:将采集的数据形成采集文件。
在本发明一个实施例中,可以将采集的数据形成系统可以识别的数据库格式的采集文件。
步骤209:分析采集文件中的数据,确定导致内存泄露的内存标签。
在本发明一个实施例中,对采集文件中的数据进行分析,如果内存标签消耗的内存在对应的操作执行过程中持续增大,且停止对应操作执行后内存标签消耗的内存与初始内存标签消耗的内存之差大于预定值,则确定该内存标签导致内存泄露的,如果内存标签消耗的内存在对应的操作执行过程中维持在一定的数值,且停止对应操作执行后内存标签消耗的内存与初始内存标签消耗的内存之差小于预定值,则确定该内存标签正常,不是导致内存泄露的原因。例如,设定内存消耗的预定值为2GB,通过对采集文件的分析,初始时内存标签A5和内存标签B6消耗的内存均为1GB,在操作A和操作B执行过程中,对应的内存标签A5和内存标签B6消耗的内存不断增加,达到设定时间时,内存标签A5消耗的内存为12GB,内存标签B6消耗的内存为8GB,而且结束操作A和操作B的执行后,内存标签A5消耗的内存为11GB,内存标签B6消耗的内存为7GB,此时内存标签A5和内存标签B6消耗的内存与初始消耗内存之差均大于2GB,其他内存标签在对应操作执行过程中,消耗的内存维持在一个稳定的数值,停止对应操作后消耗的内存与初始消耗内存之差小于2GB,则确定内存标签A5和内存标签B6是导致内存泄露的内存标签。
如图3所示,本发明一个实施例提供了一种基于基于PoolMon的内存泄露检测和定位的装置,该装置可以包括:
第一执行单元301,用于将待检测程序运行在系统上,对该程序的各个操作进行反复循环执行,直至达到第一预设时间停止待检测程序的运行;
检测单元302,用于检测所述第一执行单元301对各个操作反复循环执行过程中及执行前和执行完毕后系统内存的占用情况;
判断单元303,用于根据所述检测单元302检测出的系统内存占用情况,判断所述待检测程序是否发生内存泄露;
第二执行单元304,用于根据所述判断单元303做出的判断结果,如果发生内存泄露,将所述待检测程序运行在至少一个系统上,每个系统上反复循环执行所述待检测程序的其中一个操作,直至达到第二预设时间停止待检测程序的运行,其中,所述系统数量与所述待检测程序的操作数量相同,且每个所述系统上执行的操作互不相同;
采集单元305,用于所述第二执行单元304在对应的系统上执行各操作过程中,通过所述PoolMon采集每个操作对应的各个内存标签的访问记录数据,并形成采集文件;
分析单元306,用于分析所述采集单元305形成的采集文件,确定导致内存泄露的内存标签。
在本发明一个实施例中,
所述采集单元305,用于从开始执行所述各操作起,在每个系统上,每经过一个间隔时间,通过所述PoolMon采集一次各个内存标签的访问记录数据,直至达到所述第二预设时间。
在本发明一个实施例中,
所述判断单元303,用于如果所述各个操作反复循环执行过程中系统内存占用不断增加,且所述待检测程序停止运行后系统内存占用与初始系统内存占用之差大于第一预定值,则判断为所述待检测程序发生内存泄露,否则判断为不发生内存泄露。
在本发明一个实施例中,
所述分析单元306,用于根据所述采集文件中记录的数据,如果所述内存标签的内存占用不断增加,且停止执行对应操作后所述内存标签的内存占用与初始内存标签的内存占用之差大于第二预定值,则确定该内存标签导致内存泄露。
上述设备内的各单元之间的信息交互、执行过程等内容,由于与本发明方法实施例基于同一构思,具体内容可参见本发明方法实施例中的叙述,此处不再赘述。
根据上述方案,本发明的实施例所提供的一种基于基于PoolMon的内存泄露检测和定位的方法及装置,至少具有如下有益效果:
1、本发明实施例中,将待检测的程序运行在一个系统上,对该程序的各个操作进行反复循环执行足够的时间,在执行操作过程中检测系统内存的占用情况,根据系统内存的占用情况判断该程序是否发生内存泄露,如果发生内存泄露,则将该程序的各个操作分别在不同的系统上反复循环执行足够的时间,并通过PoolMon采集操作执行过程中各个操作对应的内存标签的访问记录数据,通过分析内存标签的访问记录数据,确定出导致内存泄露的内存标签,这样,首先检测待检测程序是否存在内存泄露的情况,如果存在则对导致内存泄露的内存标签进行定位,便于程序开发人员对程序的修改,从而提高检测和定位内存泄露的效率。
2、本发明实施例中,在检测程序是否发生内存泄露及对发生内存泄露程序的内存标签进行定位过程中,均将待检测程序运行在纯净的系统上,这样将避免其他应用程序对检测及定位结果造成影响,提高检测和定位内存泄露的准确性。
3、本发明实施例中,在检测程序是否发生内存泄露的过程中,将待检测程序的所有操作反复循环执行足够的时间,如果程序存在问题,经过足够长时间的反复循环操作,导致内存泄露的内存标签将消耗很大的内存,通过检测系统内存占用情况可以明确地判断程序是否发生了内存泄露;同样,对发生内存泄露程序的内存标签进行定位过程中,要将所有操作分别反复循环执行足够的时间,这样将使导致内存泄露的内存标签累计消耗足够大的系统内存,通过分析记录的数据,可以明确的确定是哪个内存标签导致了内存泄露,从而提高了检测和定位内存泄露的准确性。
4、本发明实施例中,在对导致内存泄露的内存标签进行定位过程中,通过PoolMon每经过一个间隔时间采集一次数据,间隔时间设定为较短时间,以保证在采集的过程中采集足够数量的数据,以便通过数据分析准确确定导致内存泄露的内存标签。
5、本发明实施例中,在对导致内存泄露发生的内存标签进行定位的过程中,将待检测程序运行在多个系统上,每个系统上只对互不相同的一个操作进行反复循环执行,这样分别对每一个操作对应的多个内存标签进行定位,并且可以对多个操作同时进行定位,能够提高对导致内存泄露发生的内存标签的定位速度。
需要说明的是,在本文中,诸如第一和第二之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个······”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同因素。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储在计算机可读取的存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质中。
最后需要说明的是:以上所述仅为本发明的较佳实施例,仅用于说明本发明的技术方案,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所做的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
Claims (9)
1.一种基于PoolMon的内存泄露检测和定位的方法,其特征在于,包括:
将待检测程序运行在系统上,对该程序的各个操作进行反复循环执行,直至达到第一预设时间停止待检测程序的运行;
检测所述各个操作反复循环执行过程中及执行前和执行完毕后系统内存的占用情况;
根据所述系统内存占用情况,判断所述待检测程序是否发生内存泄露;
根据判断结果,如果发生内存泄露,将所述待检测程序运行在至少一个系统上,每个系统上反复循环执行所述待检测程序的其中一个操作,直至达到第二预设时间停止待检测程序的运行,其中,所述系统数量与所述待检测程序的操作数量相同,且每个所述系统上执行的操作互不相同;
在对应的系统上执行各操作过程中,通过所述PoolMon采集每个操作对应的各个内存标签的访问记录数据,并形成采集文件;
分析所述采集文件,确定导致内存泄露的内存标签。
2.根据权利要求1所述的方法,其特征在于,
所述在对应的系统上执行各操作过程中,通过所述PoolMon采集每个操作对应的各个内存标签的访问记录数据包括:从开始执行所述各操作起,在每个系统上,每经过一个间隔时间,通过所述PoolMon采集一次各个内存标签的访问记录数据,直至达到所述第二预设时间。
3.根据权利要求2所述的方法,其特征在于,
所述间隔时间小于所述第二预设时间。
4.根据权利要求1所述的方法,其特征在于,所述根据所述系统内存占用情况,判断所述待检测程序是否发生内存泄露包括:如果所述各个操作反复循环执行过程中系统内存占用不断增加,且所述待检测程序停止运行后系统内存占用与初始系统内存占用之差大于第一预定值,则判断为所述待检测程序发生内存泄露,否则判断为不发生内存泄露。
5.根据权利要求1所述的方法,其特征在于,所述分析所述采集文件,确定导致内存泄露的内存标签包括:根据所述采集文件中记录的数据,如果所述内存标签的内存占用不断增加,且停止执行对应操作后所述内存标签的内存占用与初始内存标签的内存占用之差大于第二预定值,则确定该内存标签导致内存泄露。
6.一种基于PoolMon的内存泄露检测和定位的装置,其特征在于,包括:
第一执行单元,用于将待检测程序运行在系统上,对该程序的各个操作进行反复循环执行,直至达到第一预设时间停止待检测程序的运行;
检测单元,用于检测所述第一执行单元对各个操作反复循环执行过程中及执行前和执行完毕后系统内存的占用情况;
判断单元,用于根据所述检测单元检测出的系统内存占用情况,判断所述待检测程序是否发生内存泄露;
第二执行单元,用于根据所述判断单元做出的判断结果,如果发生内存泄露,将所述待检测程序运行在至少一个系统上,每个系统上反复循环执行所述待检测程序的其中一个操作,直至达到第二预设时间停止待检测程序的运行,其中,所述系统数量与所述待检测程序的操作数量相同,且每个所述系统上执行的操作互不相同;
采集单元,用于所述第二执行单元在对应的系统上执行各操作过程中,通过所述PoolMon采集每个操作对应的各个内存标签的访问记录数据,并形成采集文件;
分析单元,用于分析所述采集单元形成的采集文件,确定导致内存泄露的内存标签。
7.根据权利要求6所述的装置,其特征在于,
所述采集单元,用于从开始执行所述各操作起,在每个系统上,每经过一个间隔时间,通过所述PoolMon采集一次各个内存标签的访问记录数据,直至达到所述第二预设时间。
8.根据权利要求6所述的装置,其特征在于,
所述判断单元,用于如果所述各个操作反复循环执行过程中系统内存占用不断增加,且所述待检测程序停止运行后系统内存占用与初始系统内存占用之差大于第一预定值,则判断为所述待检测程序发生内存泄露,否则判断为不发生内存泄露。
9.根据权利要求6所述的装置,其特征在于,
所述分析单元,用于根据所述采集文件中记录的数据,如果所述内存标签的内存占用不断增加,且停止执行对应操作后所述内存标签的内存占用与初始内存标签的内存占用之差大于第二预定值,则确定该内存标签导致内存泄露。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510264114.1A CN104965779A (zh) | 2015-05-22 | 2015-05-22 | 一种基于PoolMon的内存泄露检测和定位的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510264114.1A CN104965779A (zh) | 2015-05-22 | 2015-05-22 | 一种基于PoolMon的内存泄露检测和定位的方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN104965779A true CN104965779A (zh) | 2015-10-07 |
Family
ID=54219814
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510264114.1A Pending CN104965779A (zh) | 2015-05-22 | 2015-05-22 | 一种基于PoolMon的内存泄露检测和定位的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104965779A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105243007A (zh) * | 2015-10-13 | 2016-01-13 | 广东欧珀移动通信有限公司 | 移动终端中内存的老化测试方法和装置 |
CN105677549A (zh) * | 2015-12-30 | 2016-06-15 | 合一网络技术(北京)有限公司 | 一种软件测试管理方法及系统 |
CN107346266A (zh) * | 2017-06-09 | 2017-11-14 | 烽火通信科技股份有限公司 | 基于VxWorks操作系统的内存分配信息跟踪方法及装置 |
CN111352829A (zh) * | 2019-11-21 | 2020-06-30 | 杭州迪普科技股份有限公司 | 一种内存泄漏的测试方法、装置及设备 |
CN113722133A (zh) * | 2021-07-28 | 2021-11-30 | 苏州浪潮智能科技有限公司 | 一种内存泄漏检测方法、装置及设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7434105B1 (en) * | 2005-11-07 | 2008-10-07 | Symantec Operating Corporation | Selective self-healing of memory errors using allocation location information |
CN101819549A (zh) * | 2010-04-13 | 2010-09-01 | 东莞宇龙通信科技有限公司 | 一种内存泄露的定位方法及装置 |
CN102073591A (zh) * | 2011-01-14 | 2011-05-25 | 福建星网视易信息系统有限公司 | 嵌入式系统内存占用状况检测方法及系统 |
CN103473172A (zh) * | 2013-09-05 | 2013-12-25 | 无敌科技(西安)有限公司 | 检查后台程序内存泄露并定位泄露内存点的系统及方法 |
CN103902437A (zh) * | 2014-03-11 | 2014-07-02 | 深圳市同洲电子股份有限公司 | 一种检测方法及服务器 |
-
2015
- 2015-05-22 CN CN201510264114.1A patent/CN104965779A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7434105B1 (en) * | 2005-11-07 | 2008-10-07 | Symantec Operating Corporation | Selective self-healing of memory errors using allocation location information |
CN101819549A (zh) * | 2010-04-13 | 2010-09-01 | 东莞宇龙通信科技有限公司 | 一种内存泄露的定位方法及装置 |
CN102073591A (zh) * | 2011-01-14 | 2011-05-25 | 福建星网视易信息系统有限公司 | 嵌入式系统内存占用状况检测方法及系统 |
CN103473172A (zh) * | 2013-09-05 | 2013-12-25 | 无敌科技(西安)有限公司 | 检查后台程序内存泄露并定位泄露内存点的系统及方法 |
CN103902437A (zh) * | 2014-03-11 | 2014-07-02 | 深圳市同洲电子股份有限公司 | 一种检测方法及服务器 |
Non-Patent Citations (1)
Title |
---|
MICROSOFT: "How to use Memory Pool Monitor(Poolmon.exe) to troubleshoot kernel mode memory leaks", 《HTTPS://SUPPORT.MICROSOFT.COM/EN-US/HELP/177415/HOW-TO-USE-MEMORY-POOL-MONITOR-POOLMON.EXE-TO-TROUBLESHOOT-KERNEL-MODE-MEMORY-LEAKS》 * |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105243007A (zh) * | 2015-10-13 | 2016-01-13 | 广东欧珀移动通信有限公司 | 移动终端中内存的老化测试方法和装置 |
CN105243007B (zh) * | 2015-10-13 | 2018-09-11 | 广东欧珀移动通信有限公司 | 移动终端中内存的老化测试方法和装置 |
CN105677549A (zh) * | 2015-12-30 | 2016-06-15 | 合一网络技术(北京)有限公司 | 一种软件测试管理方法及系统 |
CN105677549B (zh) * | 2015-12-30 | 2018-08-24 | 合一网络技术(北京)有限公司 | 一种软件测试管理方法及系统 |
CN107346266A (zh) * | 2017-06-09 | 2017-11-14 | 烽火通信科技股份有限公司 | 基于VxWorks操作系统的内存分配信息跟踪方法及装置 |
CN111352829A (zh) * | 2019-11-21 | 2020-06-30 | 杭州迪普科技股份有限公司 | 一种内存泄漏的测试方法、装置及设备 |
CN113722133A (zh) * | 2021-07-28 | 2021-11-30 | 苏州浪潮智能科技有限公司 | 一种内存泄漏检测方法、装置及设备 |
CN113722133B (zh) * | 2021-07-28 | 2023-05-26 | 苏州浪潮智能科技有限公司 | 一种内存泄漏检测方法、装置及设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9323652B2 (en) | Iterative bottleneck detector for executing applications | |
CN107622014B (zh) | 测试报告生成方法、装置、可读存储介质和计算机设备 | |
CN104965779A (zh) | 一种基于PoolMon的内存泄露检测和定位的方法及装置 | |
Nguyen et al. | Automated detection of performance regressions using statistical process control techniques | |
CN109934268B (zh) | 异常交易检测方法及系统 | |
US11016477B2 (en) | Devices, methods, and systems for a distributed rule based automated fault detection | |
US20240020215A1 (en) | Analyzing large-scale data processing jobs | |
US8245084B2 (en) | Two-level representative workload phase detection | |
CN104461846A (zh) | 检测应用程序耗电量的方法和装置 | |
CN102708029B (zh) | 性能瓶颈诊断方法和设备 | |
CN105279092A (zh) | 一种软件测试的方法及装置 | |
CN104750605A (zh) | 将内核对象信息包括在用户转储中 | |
CN102567351B (zh) | 一种数据库变更效果的测试方法及测试装置 | |
CN103293410B (zh) | 服务器功耗检测方法与装置 | |
CN110990395B (zh) | 一种数据处理方法及装置 | |
CN102779093A (zh) | 对象粒度收集的Java不变式检测系统 | |
Drebes et al. | Automatic detection of performance anomalies in task-parallel programs | |
CN115687140B (zh) | 一种基于自动化测试的测试用例编写方法和系统 | |
CN116149577B (zh) | 基于轮转池的数据处理方法、系统和可读存储介质 | |
CN114925977A (zh) | 数据处理方法、系统、设备及存储介质 | |
Li et al. | FPGA software testing process management | |
CN112699105A (zh) | 一种用于数据融合与感知协同处理的方法及系统 | |
CN117391579A (zh) | 一种设备信息分析方法、系统和存储介质 | |
CN116860894A (zh) | 基于能源数据仓库的配置与处理方法、装置及其相关介质 | |
CN113762665A (zh) | 一种实时指标的相关实时数据回溯方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20151007 |
|
WD01 | Invention patent application deemed withdrawn after publication |