[发明专利]基于垃圾回收的内存分析优化方法及系统有效
申请号: | 201410284405.2 | 申请日: | 2014-06-24 |
公开(公告)号: | CN104063245A | 公开(公告)日: | 2014-09-24 |
发明(设计)人: | 尹洪亮 | 申请(专利权)人: | 用友优普信息技术有限公司 |
主分类号: | G06F9/445 | 分类号: | G06F9/445 |
代理公司: | 北京中恒高博知识产权代理有限公司 11249 | 代理人: | 姜万林 |
地址: | 100094 北京*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 垃圾 回收 内存 分析 优化 方法 系统 | ||
技术领域
本发明涉及计算机技术领域,具体地,涉及一种基于垃圾回收的内存分析优化方法和一种基于垃圾回收的内存分析优化系统。
背景技术
现代软件应用越来越复杂,软件也日益庞大,在一个庞大的系统中,很难评估内存对象的创建和回收对系统性能的具体影响。
在现有技术中,对内存进行分析处理时,需要通过多个不同时间点的内存映像,并结合性能计数器记录来分析一段时间内内存的变化和系统性能记录之间的关系。
这种方法的缺点是只能进行粗略估算,不能提供精确的数据供科学评估。
因此,需要一种新的基于垃圾回收的内存分析优化技术,可以在现有的基于垃圾回收的内存分析基础上,充分利用现有代码完成准确评估每次垃圾回收过程对系统性能产生影响的内存分析优化,建立现有代码参与的准确评估每次垃圾回收过程对系统性能产生影响的通用、统一分析优化思路。
发明内容
本发明正是基于上述问题,提出了一种新的基于垃圾回收的内存分析优化技术,可以在现有的基于垃圾回收的内存分析基础上,充分利用现有代码完成准确评估每次垃圾回收过程对系统性能产生影响的内存分析优化,建立现有代码参与的准确评估每次垃圾回收过程对系统性能产生影响的通用、统一分析优化思路。
有鉴于此,本发明提出了一种基于垃圾回收的内存分析优化方法,包括:步骤102:将当前托管内存的垃圾回收附加到目标进程;步骤104:基于步骤102附加到目标程序的当前托管内存的垃圾回收,为该垃圾回收的开始和该垃圾回收的结束设置断点;步骤108:在步骤104设置的断点触发时,分析并输出当前托管内存信息。在该技术方案中,通过为垃圾回收的开始和结束设置断点,在断点触发时,收集当前的内存对象,即可比对出每一次垃圾回收哪些对象被回收掉了;从而实现不对现有代码进行修改的情况下,准确评估每次垃圾回收过程对系统性能产生的影响,简化了内存分析优化的操作,减少了内存分析优化的时间。
在上述技术方案中,优选地,在所述步骤104和步骤108之间,还包括:步骤106:在步骤104设置的断点触发时,记录当前托管内存信息;以及,所述步骤108具体包括:在步骤104设置的断点触发时,基于步骤106记录的当前托管内存信息,分析并输出当前托管内存信息。在该技术方案中,可以记录并存储当前托管内存信息,为分析并输出当前托管内存信息、以及后期的查询提供依据。
在上述技术方案中,优选地,所述步骤102将当前托管内存的垃圾回收附加到目标进程的操作,具体包括:步骤202:设置基于当前托管内存的垃圾回收的调试器和性能计数器;步骤204:将步骤202设置的调试器附加到目标进程,准备开始调试,打开步骤202设置的性能计数器,收集%Time In GC。在该技术方案中,通过预先设置调试器和性能计数器,可以方便当前托管内存信息的分析和处理。
在上述技术方案中,优选地,所述步骤104为该垃圾回收的开始和该垃圾回收的结束设置断点的操作,具体包括:在GCHeap的SuspendEE和RestartEE方法上设置断点,这两个方法对应垃圾回收的开始和结束。在该技术方案中,通过设置断点,对垃圾回收的开始和结束作标记,使得当前内存托管信息的分析处理有据可寻,且不易出错。
在上述技术方案中,优选地,所述步骤108分析并输出当前托管内存信息的操作,具体包括:步骤302:对比垃圾回收(即GC)开始前和结束后的托管内存对象,分析哪些对象被频繁的回收和创建;步骤304:与步骤302同时进行,对比垃圾回收期间性能计数器中的%Time In GC情况,即可知道哪些对象被频繁的回收和创建、对内存的影响、以及由此产生的CPU影响。在该技术方案中,通过对比性能计数器数据,即可知道CPU中花在GC上的时间,通过连续分析,即可知道哪一部分对象被频繁的回收和创建,影响性能了。
根据本发明的又一个方面,还提出了一种基于垃圾回收的内存分析优化系统,包括:目标进程附加模块,用于将当前托管内存的垃圾回收附加到目标进程;断点设置模块,用于基于所述目标进程附加模块附加到目标程序的当前托管内存的垃圾回收,为该垃圾回收的开始和该垃圾回收的结束设置断点;当前托管内存信息输出模块,用于在所述断点设置模块设置的断点触发时,分析并输出当前托管内存信息。在该技术方案中,通过为垃圾回收的开始和结束设置断点,在断点触发时,收集当前的内存对象,即可比对出每一次垃圾回收哪些对象被回收掉了;从而实现不对现有代码进行修改的情况下,准确评估每次垃圾回收过程对系统性能产生的影响,简化了内存分析优化的操作,减少了内存分析优化的时间。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于用友优普信息技术有限公司,未经用友优普信息技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201410284405.2/2.html,转载请声明来源钻瓜专利网。