《基于垃圾回收的内存分析优化方法及系统.pdf》由会员分享,可在线阅读,更多相关《基于垃圾回收的内存分析优化方法及系统.pdf(11页珍藏版)》请在专利查询网上搜索。
1、10申请公布号CN104063245A43申请公布日20140924CN104063245A21申请号201410284405222申请日20140624G06F9/44520060171申请人用友优普信息技术有限公司地址100094北京市海淀区北清路68号用友软件园72发明人尹洪亮74专利代理机构北京中恒高博知识产权代理有限公司11249代理人姜万林54发明名称基于垃圾回收的内存分析优化方法及系统57摘要本发明提供了一种基于垃圾回收的内存分析优化方法,包括将当前托管内存的垃圾回收附加到目标进程;基于附加到目标程序的当前托管内存的垃圾回收,为该垃圾回收的开始和该垃圾回收的结束设置断点;在设置的。
2、断点触发时,分析并输出当前托管内存信息。本发明还提供了一种基于垃圾回收的内存分析优化系统。通过本发明的技术方案,可以在现有的基于垃圾回收的内存分析基础上,充分利用现有代码完成准确评估每次垃圾回收过程对系统性能产生影响的内存分析优化,建立现有代码参与的准确评估每次垃圾回收过程对系统性能产生影响的通用、统一分析优化思路。51INTCL权利要求书2页说明书6页附图2页19中华人民共和国国家知识产权局12发明专利申请权利要求书2页说明书6页附图2页10申请公布号CN104063245ACN104063245A1/2页21一种基于垃圾回收的内存分析优化方法,其特征在于,包括步骤102将当前托管内存的垃圾。
3、回收附加到目标进程;步骤104基于步骤102附加到目标程序的当前托管内存的垃圾回收,为该垃圾回收的开始和该垃圾回收的结束设置断点;步骤108在步骤104设置的断点触发时,分析并输出当前托管内存信息。2根据权利要求1所述的基于垃圾回收的内存分析优化方法,其特征在于,在所述步骤104和步骤108之间,还包括步骤106在步骤104设置的断点触发时,记录当前托管内存信息;以及,所述步骤108具体包括在步骤104设置的断点触发时,基于步骤106记录的当前托管内存信息,分析并输出当前托管内存信息。3根据权利要求1或2所述的基于垃圾回收的内存分析优化方法,其特征在于,所述步骤102将当前托管内存的垃圾回收附。
4、加到目标进程的操作,具体包括步骤202设置基于当前托管内存的垃圾回收的调试器和性能计数器;步骤204将步骤202设置的调试器附加到目标进程,准备开始调试,打开步骤202设置的性能计数器,收集TIMEINGC。4根据权利要求1或2所述的基于垃圾回收的内存分析优化方法,其特征在于,所述步骤104为该垃圾回收的开始和该垃圾回收的结束设置断点的操作,具体包括在GCHEAP的SUSPENDEE和RESTARTEE方法上设置断点,这两个方法对应垃圾回收的开始和结束。5根据权利要求1或2所述的基于垃圾回收的内存分析优化方法,其特征在于,所述步骤108分析并输出当前托管内存信息的操作,具体包括步骤302对比G。
5、C开始前和结束后的托管内存对象,分析哪些对象被频繁的回收和创建;步骤304与步骤302同时进行,对比垃圾回收期间性能计数器中的TIMEINGC情况,即可知道哪些对象被频繁的回收和创建、对内存的影响、以及由此产生的CPU影响。6一种基于垃圾回收的内存分析优化系统,其特征在于,包括目标进程附加模块,用于将当前托管内存的垃圾回收附加到目标进程;断点设置模块,用于基于所述目标进程附加模块附加到目标程序的当前托管内存的垃圾回收,为该垃圾回收的开始和该垃圾回收的结束设置断点;当前托管内存信息输出模块,用于在所述断点设置模块设置的断点触发时,分析并输出当前托管内存信息。7根据权利要求6所述的基于垃圾回收的内。
6、存分析优化系统,其特征在于,还包括当前托管内存信息记录模块,用于在所述断点设置模块设置的断点触发时,记录当前托管内存信息;以及,所述当前托管内存信息输出模块,用于在所述断点设置模块设置的断点触发时,基于所述当前托管内存信息记录模块记录的当前托管内存信息,分析并输出当前托管内存信息。8根据权利要求6或7所述的基于垃圾回收的内存分析优化系统,其特征在于,所述目权利要求书CN104063245A2/2页3标进程附加模块将当前托管内存的垃圾回收附加到目标进程的操作,具体包括设置基于当前托管内存的垃圾回收的调试器和性能计数器;将设置的调试器附加到目标进程,准备开始调试,打开设置的性能计数器,收集TIME。
7、INGC。9根据权利要求6或7所述的基于垃圾回收的内存分析优化系统,其特征在于,所述断点设置模块为该垃圾回收的开始和该垃圾回收的结束设置断点的操作,具体包括在GCHEAP的SUSPENDEE和RESTARTEE方法上设置断点,这两个方法对应垃圾回收的开始和结束。10根据权利要求6或7所述的基于垃圾回收的内存分析优化系统,其特征在于,所述当前托管内存信息输出模块分析并输出当前托管内存信息的操作,具体包括对比GC开始前和结束后的托管内存对象,分析哪些对象被频繁的回收和创建;同时,对比垃圾回收期间性能计数器中的TIMEINGC情况,即可知道哪些对象被频繁的回收和创建、对内存的影响、以及由此产生的CP。
8、U影响。权利要求书CN104063245A1/6页4基于垃圾回收的内存分析优化方法及系统技术领域0001本发明涉及计算机技术领域,具体地,涉及一种基于垃圾回收的内存分析优化方法和一种基于垃圾回收的内存分析优化系统。背景技术0002现代软件应用越来越复杂,软件也日益庞大,在一个庞大的系统中,很难评估内存对象的创建和回收对系统性能的具体影响。0003在现有技术中,对内存进行分析处理时,需要通过多个不同时间点的内存映像,并结合性能计数器记录来分析一段时间内内存的变化和系统性能记录之间的关系。0004这种方法的缺点是只能进行粗略估算,不能提供精确的数据供科学评估。0005因此,需要一种新的基于垃圾回收。
9、的内存分析优化技术,可以在现有的基于垃圾回收的内存分析基础上,充分利用现有代码完成准确评估每次垃圾回收过程对系统性能产生影响的内存分析优化,建立现有代码参与的准确评估每次垃圾回收过程对系统性能产生影响的通用、统一分析优化思路。发明内容0006本发明正是基于上述问题,提出了一种新的基于垃圾回收的内存分析优化技术,可以在现有的基于垃圾回收的内存分析基础上,充分利用现有代码完成准确评估每次垃圾回收过程对系统性能产生影响的内存分析优化,建立现有代码参与的准确评估每次垃圾回收过程对系统性能产生影响的通用、统一分析优化思路。0007有鉴于此,本发明提出了一种基于垃圾回收的内存分析优化方法,包括步骤102将。
10、当前托管内存的垃圾回收附加到目标进程;步骤104基于步骤102附加到目标程序的当前托管内存的垃圾回收,为该垃圾回收的开始和该垃圾回收的结束设置断点;步骤108在步骤104设置的断点触发时,分析并输出当前托管内存信息。在该技术方案中,通过为垃圾回收的开始和结束设置断点,在断点触发时,收集当前的内存对象,即可比对出每一次垃圾回收哪些对象被回收掉了;从而实现不对现有代码进行修改的情况下,准确评估每次垃圾回收过程对系统性能产生的影响,简化了内存分析优化的操作,减少了内存分析优化的时间。0008在上述技术方案中,优选地,在所述步骤104和步骤108之间,还包括步骤106在步骤104设置的断点触发时,记录。
11、当前托管内存信息;以及,所述步骤108具体包括在步骤104设置的断点触发时,基于步骤106记录的当前托管内存信息,分析并输出当前托管内存信息。在该技术方案中,可以记录并存储当前托管内存信息,为分析并输出当前托管内存信息、以及后期的查询提供依据。0009在上述技术方案中,优选地,所述步骤102将当前托管内存的垃圾回收附加到目标进程的操作,具体包括步骤202设置基于当前托管内存的垃圾回收的调试器和性能计数器;步骤204将步骤202设置的调试器附加到目标进程,准备开始调试,打开步骤202设说明书CN104063245A2/6页5置的性能计数器,收集TIMEINGC。在该技术方案中,通过预先设置调试器。
12、和性能计数器,可以方便当前托管内存信息的分析和处理。0010在上述技术方案中,优选地,所述步骤104为该垃圾回收的开始和该垃圾回收的结束设置断点的操作,具体包括在GCHEAP的SUSPENDEE和RESTARTEE方法上设置断点,这两个方法对应垃圾回收的开始和结束。在该技术方案中,通过设置断点,对垃圾回收的开始和结束作标记,使得当前内存托管信息的分析处理有据可寻,且不易出错。0011在上述技术方案中,优选地,所述步骤108分析并输出当前托管内存信息的操作,具体包括步骤302对比垃圾回收(即GC)开始前和结束后的托管内存对象,分析哪些对象被频繁的回收和创建;步骤304与步骤302同时进行,对比垃。
13、圾回收期间性能计数器中的TIMEINGC情况,即可知道哪些对象被频繁的回收和创建、对内存的影响、以及由此产生的CPU影响。在该技术方案中,通过对比性能计数器数据,即可知道CPU中花在GC上的时间,通过连续分析,即可知道哪一部分对象被频繁的回收和创建,影响性能了。0012根据本发明的又一个方面,还提出了一种基于垃圾回收的内存分析优化系统,包括目标进程附加模块,用于将当前托管内存的垃圾回收附加到目标进程;断点设置模块,用于基于所述目标进程附加模块附加到目标程序的当前托管内存的垃圾回收,为该垃圾回收的开始和该垃圾回收的结束设置断点;当前托管内存信息输出模块,用于在所述断点设置模块设置的断点触发时,分。
14、析并输出当前托管内存信息。在该技术方案中,通过为垃圾回收的开始和结束设置断点,在断点触发时,收集当前的内存对象,即可比对出每一次垃圾回收哪些对象被回收掉了;从而实现不对现有代码进行修改的情况下,准确评估每次垃圾回收过程对系统性能产生的影响,简化了内存分析优化的操作,减少了内存分析优化的时间。0013在上述技术方案中,优选地,上述基于垃圾回收的内存分析优化系统,还包括当前托管内存信息记录模块,用于在所述断点设置模块设置的断点触发时,记录当前托管内存信息;以及,所述当前托管内存信息输出模块,用于在所述断点设置模块设置的断点触发时,基于所述当前托管内存信息记录模块记录的当前托管内存信息,分析并输出当。
15、前托管内存信息。在该技术方案中,可以记录并存储当前托管内存信息,为分析并输出当前托管内存信息、以及后期的查询提供依据。0014在上述技术方案中,优选地,设置基于当前托管内存的垃圾回收的调试器和性能计数器;将设置的调试器附加到目标进程,准备开始调试,打开设置的性能计数器,收集TIMEINGC。在该技术方案中,通过预先设置调试器和性能计数器,可以方便当前托管内存信息的分析和处理。0015在上述技术方案中,优选地,所述断点设置模块为该垃圾回收的开始和该垃圾回收的结束设置断点的操作,具体包括在GCHEAP的SUSPENDEE和RESTARTEE方法上设置断点,这两个方法对应垃圾回收的开始和结束。在该技。
16、术方案中,通过设置断点,对垃圾回收的开始和结束作标记,使得当前内存托管信息的分析处理有据可寻,且不易出错。0016在上述技术方案中,优选地,所述当前托管内存信息输出模块分析并输出当前托管内存信息的操作,具体包括对比GC开始前和结束后的托管内存对象,分析哪些对象被频繁的回收和创建;同时,对比垃圾回收期间性能计数器中的TIMEINGC情况,即可知道哪些对象被频繁的回收和创建、对内存的影响、以及由此产生的CPU影响。在该技术方案中,通过对比性能计数器数据,即可知道CPU中花在GC上的时间,通过连续分析,即可知道说明书CN104063245A3/6页6哪一部分对象被频繁的回收和创建,影响性能了。001。
17、7通过以上技术方案,可以在现有的基于垃圾回收的内存分析基础上,充分利用现有代码完成准确评估每次垃圾回收过程对系统性能产生影响的内存分析优化,建立现有代码参与的准确评估每次垃圾回收过程对系统性能产生影响的通用、统一分析优化思路。附图说明0018图1示出了根据本发明的实施例的基于垃圾回收的内存分析优化方法的流程图;图2示出了根据本发明的实施例的附加到目标进程的流程图;图3示出了根据本发明的实施例的分析并输出当前托管内存信息的流程图;图4示出了根据本发明的实施例的基于垃圾回收的内存分析优化系统的框图。具体实施方式0019为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和具体实施方式对本。
18、发明进行进一步的详细描述。需要说明的是,在不冲突的情况下,本申请的实施例及实施例中的特征可以相互组合。0020在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是,本发明还可以采用其他不同于在此描述的其他方式来实施,因此,本发明的保护范围并不受下面公开的具体实施例的限制。0021图1示出了根据本发明的实施例的基于垃圾回收的内存分析优化方法的流程图。0022如图1所示,根据本发明的实施例的基于垃圾回收的内存分析优化方法,包括步骤102将当前托管内存的垃圾回收附加到目标进程;步骤104基于步骤102附加到目标程序的当前托管内存的垃圾回收,为该垃圾回收的开始和该垃圾回收的结束设置断点;步骤10。
19、8在步骤104设置的断点触发时,分析并输出当前托管内存信息。在该技术方案中,通过为垃圾回收的开始和结束设置断点,在断点触发时,收集当前的内存对象,即可比对出每一次垃圾回收哪些对象被回收掉了;从而实现不对现有代码进行修改的情况下,准确评估每次垃圾回收过程对系统性能产生的影响,简化了内存分析优化的操作,减少了内存分析优化的时间。0023在上述技术方案中,优选地,在步骤104和步骤108之间,还包括步骤106在步骤104设置的断点触发时,记录当前托管内存信息;以及,步骤108具体包括在步骤104设置的断点触发时,基于步骤106记录的当前托管内存信息,分析并输出当前托管内存信息。在该技术方案中,可以记。
20、录并存储当前托管内存信息,为分析并输出当前托管内存信息、以及后期的查询提供依据。0024在上述技术方案中,优选地,如图2所示,步骤102将当前托管内存的垃圾回收附加到目标进程的操作,具体包括步骤202设置基于当前托管内存的垃圾回收的调试器和性能计数器;步骤204将步骤202设置的调试器附加到目标进程,准备开始调试,打开步骤202设置的性能计数器,收集TIMEINGC。在该技术方案中,通过预先设置调试器和性能计数器,可以方便当前托管内存信息的分析和处理。0025在上述技术方案中,优选地,步骤104为该垃圾回收的开始和该垃圾回收的结束设置断点的操作,具体包括在GCHEAP的SUSPENDEE和RE。
21、STARTEE方法上设置断点,这两个说明书CN104063245A4/6页7方法对应垃圾回收的开始和结束。在该技术方案中,通过设置断点,对垃圾回收的开始和结束作标记,使得当前内存托管信息的分析处理有据可寻,且不易出错。0026在上述技术方案中,优选地,如图3所示,步骤108分析并输出当前托管内存信息的操作,具体包括步骤302对比垃圾回收(即GC)开始前和结束后的托管内存对象,分析哪些对象被频繁的回收和创建;步骤304与步骤302同时进行,对比垃圾回收期间性能计数器中的TIMEINGC情况,即可知道哪些对象被频繁的回收和创建、对内存的影响、以及由此产生的CPU影响。在该技术方案中,通过对比性能计。
22、数器数据,即可知道CPU中花在GC上的时间,通过连续分析,即可知道哪一部分对象被频繁的回收和创建,影响性能了。0027图4示出了根据本发明的实施例的基于垃圾回收的内存分析优化系统的框图。0028如图4所示,根据本发明的实施例的基于垃圾回收的内存分析优化系统400,包括目标进程附加模块402,用于将当前托管内存的垃圾回收附加到目标进程;断点设置模块404,用于基于目标进程附加模块402附加到目标程序的当前托管内存的垃圾回收,为该垃圾回收的开始和该垃圾回收的结束设置断点;当前托管内存信息输出模块408,用于在断点设置模块404设置的断点触发时,分析并输出当前托管内存信息。在该技术方案中,通过为垃圾。
23、回收的开始和结束设置断点,在断点触发时,收集当前的内存对象,即可比对出每一次垃圾回收哪些对象被回收掉了;从而实现不对现有代码进行修改的情况下,准确评估每次垃圾回收过程对系统性能产生的影响,简化了内存分析优化的操作,减少了内存分析优化的时间。0029在上述技术方案中,优选地,上述基于垃圾回收的内存分析优化系统,还包括当前托管内存信息记录模块406,用于在断点设置模块404设置的断点触发时,记录当前托管内存信息;以及,当前托管内存信息输出模块408,用于在断点设置模块404设置的断点触发时,基于当前托管内存信息记录模块406记录的当前托管内存信息,分析并输出当前托管内存信息。在该技术方案中,可以记。
24、录并存储当前托管内存信息,为分析并输出当前托管内存信息、以及后期的查询提供依据。0030在上述技术方案中,优选地,设置基于当前托管内存的垃圾回收的调试器和性能计数器;将设置的调试器附加到目标进程,准备开始调试,打开设置的性能计数器,收集TIMEINGC。在该技术方案中,通过预先设置调试器和性能计数器,可以方便当前托管内存信息的分析和处理。0031在上述技术方案中,优选地,断点设置模块为该垃圾回收的开始和该垃圾回收的结束设置断点的操作,具体包括在GCHEAP的SUSPENDEE和RESTARTEE方法上设置断点,这两个方法对应垃圾回收的开始和结束。在该技术方案中,通过设置断点,对垃圾回收的开始和。
25、结束作标记,使得当前内存托管信息的分析处理有据可寻,且不易出错。0032在上述技术方案中,优选地,当前托管内存信息输出模块分析并输出当前托管内存信息的操作,具体包括对比GC开始前和结束后的托管内存对象,分析哪些对象被频繁的回收和创建;同时,对比垃圾回收期间性能计数器中的TIMEINGC情况,即可知道哪些对象被频繁的回收和创建、对内存的影响、以及由此产生的CPU影响。在该技术方案中,通过对比性能计数器数据,即可知道CPU中花在GC上的时间,通过连续分析,即可知道哪一部分对象被频繁的回收和创建,影响性能了。0033本发明的技术方案,可以解决的核心问题为不对现有代码进行修改;准确说明书CN10406。
26、3245A5/6页8评估每次垃圾回收过程对系统性能产生的影响。本发明的技术方案,解决该核心问题后,即可进行技术方案的广泛应用,同时准确评估垃圾回收对系统性能产生的影响。0034例如,本发明的技术方案,可以在NET应用程序中,为垃圾回收的开始和结束设置断点,在断点触发时,收集当前的内存对象,即可比对出每一次垃圾回收哪些对象被回收掉了。再对比性能计数器数据,即可知道CPU中花在GC上的时间,通过连续分析,即可知道哪一部分对象被频繁的回收和创建,影响性能了。具体说明如下开始调试将调试器附加到目标进程,准备开始调试,打开性能计数器,收集TIMEINGC。0035输出设置在GCHEAP的SUSPENDE。
27、E和RESTARTEE方法上设置断点,这两个方法对应垃圾回收的开始和结束。0036收集日志当断点触发时,记录下当前的托管内存情况。0037输出分析对比GC开始前和结束后的托管内存对象,分析哪些对象被频繁的回收和创建,同时对比垃圾回收期间性能计数器中的TIMEINGC情况,即可知道哪些对象被频繁的回收和创建,对内存的影响,以及由此产生的CPU影响。0038由于GC零代堆回收最频繁,基于以上技术方案,我们可以只分析零代堆中的对象,查看哪些对象被频繁的回收和创建。使用如下命令BPCLRWKSGCHEAPSUSPENDEE“IFDWOCLRWKSGCHEAPGCCONDEMNEDGENERATION0。
28、ECHOSTARTOFGEN2DUMPHEAPSTATGELSEGC“BPCLRWKSGCHEAPRESTARTEE“IFDWOCLRWKSGCHEAPGCCONDEMNEDGENERATION0ECHOENDOFGEN2DUMPHEAPSTATGELSEGC“通过上面的调试命令,我们就可以拿到在垃圾回收一代堆发生前和发生后,托管内存的使用状态,通过DUMPHEAPSTAT命令的对比,即可知道到底是哪部分一代堆对象被频繁的创建和回收掉了。0039本发明的技术方案,可以应用于分析系统中内存分配回收数据对性能的影响,该回收数据是内存优化的关键数据。所有基于MICROSOFTNET技术开发的软件均可。
29、使用本发明的技术方案进行内存优化与分析。本发明的技术方案不同于传统的内存优化思路,以垃圾回收数据为基础,快速诊断对系统性能产生影响的内存分配操作。0040例如,本发明的技术方案,经在本申请人应用验证,可以解决大量内存优化问题,如重庆长轴项目的CPU使用率优化。0041以上结合附图详细说明了本发明的技术方案,考虑到相关技术中没有不改变现有代码、准确评估每次垃圾回收过程对系统性能产生影响的针对垃圾回收的内存分析优化的解决办法。现有的基于垃圾回收的内存分析无法完成有现有代码参与的准确评估每次垃圾回收过程对系统性能产生影响的内存分析优化过程。因此,本发明提出了一种基于垃圾回收的内存分析优化方法和一种基。
30、于垃圾回收的内存分析优化系统,可以在现有的基于垃圾回收的内存分析基础上,充分利用现有代码完成准确评估每次垃圾回收过程对系统性能产生影响的内存分析优化,建立现有代码参与的准确评估每次垃圾回收过程对系统性能产生影响的通用、统一分析优化思路。0042以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修说明书CN104063245A6/6页9改、等同替换、改进等,均应包含在本发明的保护范围之内。说明书CN104063245A1/2页10图1图2说明书附图CN104063245A102/2页11图3图4说明书附图CN104063245A11。