辅助内存分析的方法和系统的制作方法

文档序号:6580646阅读:297来源:国知局
专利名称:辅助内存分析的方法和系统的制作方法
技术领域
本发明涉及计算机领域,具体涉及运行时内存分析,更具体涉及一种用于辅助运 行时内存分析的方法和系统。
背景技术
为了检测程序中潜在的运行时内存问题,通常进行程序插装以跟踪程序运行时的 内存访问事件,就是说,将某些额外的语句或指令插入程序中,这样,当程序运行时,这些额 外的语句或指令将与原来的程序指令一起运行。这些插入的语句或指令将调用“内存访问 跟踪”模块中的例程,而“内存访问跟踪”模块中的例程将把内存访问事件记录在存储器(例 如,内存中的列表、数据库等)中。
程序插装已被广泛应用于分析工具(例如动态内存分析工具)、优化工具和测试 工具。这些工具利用程序插装来修改二进制码或字节码,以便实现诸如性能分析、代码优化 和覆盖性测试分析等目标。


图1示出了用于内存访问跟踪的程序插装的示意图。如图所示,程序经过插装后 在运行时环境中运行,在运行过程中将通过插入的额外代码调用内存访问跟踪模块,内存 访问跟踪模块将把内存访问事件存储在存储器中,并可从存储器中加载已存储的内存访问 事件,以用于进行相关的分析。
例如,对于如下所述的简单的Java程序
权利要求
1.一种用于辅助内存分析的方法,包括为程序运行中的每一个任务分配一个唯一的ID ;记录程序运行过程中发生的内存访问事件,包括进行内存访问的任务的ID ; 响应于一任务结束,发出任务结束通知,该任务结束通知包括该结束任务的ID ;以及 响应于该任务结束通知,释放内存中具有该结束任务的ID的所有内存访问事件。
2.根据权利要求1的方法,其中,所述程序运行在面向对象语言环境中,且所述为程序 运行中的每一个任务分配一个唯一的ID是通过以下方式实现的使用程序插装在代表任务的对象的类中添加一个用于存储对象ID的域;以及 修改该类的构造器,以使其为该域分配一个唯一的数值,作为对象的唯一 ID。
3.根据权利要求1或2的方法,其中,所述响应于一任务结束,发出任务结束通知是通 过以下方式实现的使用程序插装在代表任务的对象的类中插入在对象运行结束时执行的方法,该方法用 于发出包括该对象的ID的任务结束通知。
4.根据权利要求3的方法,其中,包括在任务结束通知中的该对象的ID是通过以下方 式获得的使用程序插装在代表任务的对象的类中插入在对象开始运行时执行的方法,该方法用 于将该对象的ID存储在一栈中;以及由所述在对象运行结束时执行的方法从该栈的栈顶取出该对象的ID。
5.根据权利要求3的方法,其中,所述代表任务的对象的类为实现了任务执行接口的类。
6.根据权利要求1的方法,其中,所述任务是由线程从工作队列中获取的。
7.一种用于辅助内存分析的系统,包括任务ID分配模块,用于为程序运行中的每一个任务分配一个唯一的ID ; 内存访问跟踪模块,用于记录程序运行过程中发生的内存访问事件,包括进行内存访 问的任务的ID ;任务结束通知模块,用于响应于一任务结束,发出任务结束通知,该任务结束通知包括 该结束任务的ID;以及任务跟踪处理模块,用于响应于该任务结束通知,释放内存中具有该结束任务的ID的 所有内存访问事件。
8.根据权利要求7的系统,其中,所述程序运行在面向对象语言环境中,且所述任务ID 分配模块是通过以下方式实现的使用程序插装在代表任务的对象的类中添加一个用于存储对象ID的域;以及 修改该类的构造器,以使其为该域分配一个唯一的数值,作为对象的唯一 ID。
9.根据权利要求7或8的系统,其中,所述任务结束通知模块是通过以下方式实现的 使用程序插装在代表任务的对象的类中插入在对象运行结束时执行的方法,该方法用于发出包括该对象的ID的任务结束通知。
10.根据权利要求9的系统,其中,包括在任务结束通知的该对象的ID是通知以下方式 获得的使用程序插装在代表任务的对象的类中插入在对象开始运行时执行的方法,该方法用于将该对象的ID存储在一栈中;以及由所述在对象运行结束时执行的方法从该栈的栈顶取出该对象的ID。
11.根据权利要求9的系统,其中,所述代表任务的对象的类为实现了任务执行接口的类。
12.根据权利要求7的系统,其中,所述任务是由线程从工作队列中获取的。
全文摘要
提出了一种用于辅助运行时内存分析的方法和系统,该方法包括为程序运行中的每一个任务分配一个唯一的ID;记录程序运行过程中发生的内存访问事件,包括进行内存访问的任务的ID;响应于一任务结束,发出任务结束通知,该任务结束通知包括该结束任务的ID;以及响应于该任务结束通知,释放内存中具有该结束任务的ID的所有内存访问事件。本发明的方法和系统可确保内存中存储的内存访问事件不会无限制地增长,从而显著地减少其内存开销,并使得动态内存分析更快和更有效率。
文档编号G06F11/36GK102033804SQ20091017569
公开日2011年4月27日 申请日期2009年9月29日 优先权日2009年9月29日
发明者罗志达, 齐尧 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1