[发明专利]确定程序中的内存泄漏位置的方法和装置无效
申请号: | 200810144108.2 | 申请日: | 2008-07-29 |
公开(公告)号: | CN101639804A | 公开(公告)日: | 2010-02-03 |
发明(设计)人: | 王成伟;刘天成;罗景;李影;龙泉 | 申请(专利权)人: | 国际商业机器公司 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 中国国际贸易促进委员会专利商标事务所 | 代理人: | 李镇江 |
地址: | 美国*** | 国省代码: | 美国;US |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 确定 程序 中的 内存 泄漏 位置 方法 装置 | ||
1、一种确定程序中的内存泄漏位置的方法,该方法包括以下步骤:
对程序进行动态分析,以确定内存泄漏特征;以及
基于所确定的内存泄漏特征对程序进行静态分析,从而确定内存泄漏位置。
2.根据权利要求1所述的方法,其中所述基于所确定的内存泄漏特征对程序进行静态分析的步骤包括过滤掉程序中不符合所确定的内存泄漏特征的语句。
3.根据权利要求1所述的方法,其中所述对程序进行动态分析的步骤包括:利用动态分析工具对所述程序进行分析以得到多个候选内存泄漏特征;并且将所述多个候选内存泄漏特征中速度和准确度综合性能最优的特征确定为内存泄漏特征。
4.根据权利要求3所述的方法,其中所述动态分析工具包括以下工具中的一种或多种:HeapRootTM、HeapAnalyzerTM、JinsightTM、LeakBotTM、JRockitTM、JProfilerTM以及ServertraceTM。
5.根据权利要求1所述的方法,其中所述对程序进行动态分析以确定内存泄漏特征的步骤还包括:
对程序进行动态分析,得到多个候选内存泄漏特征;
按照内存泄漏量来对获得的所述多个候选内存泄漏特征进行排序;
将内存泄漏量最大值与预定阈值进行比较,其中
当内存泄漏量最大值超过所述预定阈值时,将对应于该内存泄漏量最大值的候选特征确定为内存泄漏特征,而当内存泄漏量最大值未超过所述预定阈值时,将泄漏量总和超过阈值的多个候选特征确定为内存泄漏特征。
6.根据权利要求1至5中任一项所述的方法,其中所述基于所确定的内存泄漏特征对程序进行静态分析的步骤还包括:
检索对调用方法的先前静态分析记录;
按照预定准则来判断当前是否需要对该调用方法进行静态分析;以及
更新所述调用方法的静态分析记录。
7.根据权利要求6所述的方法,其中所述静态分析记录包括先前内存泄漏分析时间、是否查找出内存泄漏项、是否已经修复该内存泄漏项。
8.根据权利要求6所述的方法,其中所述预定准则包括距离上一次内存泄漏分析的时间、之前查找出的内存泄漏项是否已经被修复以及与本次通过动态分析方法获得的内存泄漏特征是否相关。
9.根据权利要求1至8中任一项所述的方法,还包括:
将所确定的内存泄漏位置反映到程序的源代码中;以及
对源代码中与所确定的内存泄漏位置相对应处的语句进行修复。
10.根据权利要求1至8中任一项所述的方法,其中所述基于所确定的内存泄漏特征对程序进行静态分析的步骤还包括:
当查找到符合内存泄漏特征的语句时,执行以下操作:
暂停静态分析;
将查找出的内存泄漏语句反映到程序的源代码中,并相应地修复源代码;
针对修复后的程序进行动态分析;以及
将修复后程序的内存泄漏量与预定阈值进行比较,当修复后的程序的内存泄漏量低于所述预定阈值时,退出静态分析,否则重启静态分析。
11.一种确定程序中的内存泄漏位置的方法,该方法包括以下步骤:
将程序分成多个段;
根据每段程序的特性选择动态分析方法来对该段程序进行动态分析,从而确定出各段程序的内存泄漏特征;以及
基于所确定的内存泄漏特征对各段程序进行静态分析,从而确定内存泄漏位置。
12、一种用于确定程序中的内存泄漏位置的装置,该装置包括:
动态分析器,用于对程序进行动态分析,以确定内存泄漏特征;和
静态分析器,用于基于动态分析器所确定的内存泄漏特征对程序进行静态分析,从而确定内存泄漏位置。
13、根据权利要求12所述的装置,其中静态分析器还包括过滤器,用于过滤掉程序中不符合所确定的内存泄漏特征的语句。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于国际商业机器公司,未经国际商业机器公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/200810144108.2/1.html,转载请声明来源钻瓜专利网。
- 上一篇:报表查询方法和装置
- 下一篇:一种手持设备的数据录入和处理方法