[发明专利]用于内存泄漏诊断的方法和装置有效
申请号: | 200810131740.3 | 申请日: | 2008-06-27 |
公开(公告)号: | CN101615143A | 公开(公告)日: | 2009-12-30 |
发明(设计)人: | 李欣慧;李影;陈滢;滕启明;刘天成 | 申请(专利权)人: | 国际商业机器公司 |
主分类号: | G06F9/50 | 分类号: | G06F9/50 |
代理公司: | 北京市柳沈律师事务所 | 代理人: | 黄小临 |
地址: | 美国纽*** | 国省代码: | 美国;US |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 用于 内存 泄漏 诊断 方法 装置 | ||
1.一种诊断内存泄漏的方法,包括:
跟踪应用程序在虚拟机上运行过程中的对象分配,从而获取并记录对象 的分配路径和分配时间;
以预定的时间间隔计算每一类对象在其分配路径的年龄代数,其中对象 的年龄是指从其被分配一直到被释放的时间,其年龄代数是该对象自分配起 直到被回收所经历的“垃圾回收”次数或者该对象存在时间相对于某一预定 时间阈值的倍数;以及
将其上具有高年龄代数对象的分配路径确定为可能存在内存泄漏的分配 路径,并报告给用户以进行分析。
2.如权利要求1所述的诊断内存泄漏的方法,其中,所述预定的时间间 隔是垃圾回收间隔或对应于特定类型和堆栈的对象的总量达到规定的阈值的 时间。
3.如权利要求1或2所述的诊断内存泄漏的方法,其中,获取并记录对 象的分配路径和分配时间的步骤包括:为每个对象赋予一个与分配路径相对 应的唯一的id。
4.如权利要求3所述的诊断内存泄漏的方法,其中,以预定的时间间隔 计算每一类对象在其分配路径其年龄代数的步骤包括:基于每个对象的与分 配该对象的分配路径相对应id,确定其每个对象所属的分配路径,并针对每 条分配路径整理由它分配的、并且还没有被回收的对象并根据每个对象的分 配时间计算该路径所分配同一类对象的年龄代数。
5.如权利要求3所述的诊断内存泄漏的方法,其中,将其上具有高年龄 代数对象的分配路径确定为可能存在内存泄漏的分配路径的步骤包括:根据 每条路径分配的、并且存活的同类对象的年龄代数对路径进行排序,以及对 分配路径的排序数据进行分析,并将高排序的分配路径确定为可能存在内存 泄漏的分配路径报告给用户进行分析。
6.如权利要求5所述的诊断内存泄漏的方法,其中所述跟踪应用程序在 虚拟机上运行过程中对象的分配采用一种数据结构来进行,该数据结构包含 了对象所属类的签名、对象计数、时间计数以及分配路径。
7.如权利要求6所述的诊断内存泄漏的方法,其中所述为每个对象赋予 一个与一条分配路径相对应的唯一的id,包括将每个对象的与分配路径相关 联的波段id以及组id包含在一种标签中并将标签与相应的对象绑定。
8.如权利要求7所述的诊断内存泄漏的方法,其中所述标签中还包含关 于对象的类型、路径、方法以及被调用者的信息。
9.如权利要求4所述的诊断内存泄漏的方法,其中所述以预定的时间间 隔计算每一类对象在其分配路径其年龄代数从对象所属的分配路径的最高波 段id开始。
10.如权利要求4所述的方法,其中还包括在进行所述整理之前进行至 少一次垃圾收集。
11.一种诊断内存泄漏的装置,包括:
对象分配跟踪器件,跟踪应用程序在虚拟机上运行过程中的对象分配, 从而获取对象的分配路径和分配时间;
分配路径记录器件,用于记录从对象分配跟踪器件传送来的每个对象的 分配路径和分配时间;
用于应用程序的堆,用于存储从分配路径记录器件传送来的路径分配的 对象信息;
分配路径读取器件,用于读取所述堆中路径分配的对象信息,并扫描存 储器中存储的每个对象的id以及对应的分配路径信息,以便针对每条分配路 径整理由它分配的、并且还没有被回收的对象并根据每个对象的分配时间计 算该路径所分配同一类对象的年龄代数,其中对象的年龄是指从其被分配一 直到被释放的时间,其年龄代数是该对象自分配起直到被回收所经历的“垃 圾回收”次数或者该对象存在时间相对于某一预定时间阈值的倍数;
分配路径排序器件,用于根据每条路径分配的、并且存活的对象的年龄 代数把路径排序;以及
诊断报告器件,用于对从分配路径排序器传送来的分配路径的排序数据 进行分析,并将高排序的分配路径确定为可能存在内存泄漏的分配路径报告 给用户以进行分析。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于国际商业机器公司,未经国际商业机器公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/200810131740.3/1.html,转载请声明来源钻瓜专利网。