[发明专利]辅助内存分析的方法和系统无效
申请号: | 200910175692.2 | 申请日: | 2009-09-29 |
公开(公告)号: | CN102033804A | 公开(公告)日: | 2011-04-27 |
发明(设计)人: | 罗志达;齐尧 | 申请(专利权)人: | 国际商业机器公司 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 北京市中咨律师事务所 11247 | 代理人: | 于静;张亚非 |
地址: | 美国*** | 国省代码: | 美国;US |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 辅助 内存 分析 方法 系统 | ||
技术领域
本发明涉及计算机领域,具体涉及运行时内存分析,更具体涉及一种用于辅助运行时内存分析的方法和系统。
背景技术
为了检测程序中潜在的运行时内存问题,通常进行程序插装以跟踪程序运行时的内存访问事件,就是说,将某些额外的语句或指令插入程序中,这样,当程序运行时,这些额外的语句或指令将与原来的程序指令一起运行。这些插入的语句或指令将调用“内存访问跟踪”模块中的例程,而“内存访问跟踪”模块中的例程将把内存访问事件记录在存储器(例如,内存中的列表、数据库等)中。
程序插装已被广泛应用于分析工具(例如动态内存分析工具)、优化工具和测试工具。这些工具利用程序插装来修改二进制码或字节码,以便实现诸如性能分析、代码优化和覆盖性测试分析等目标。
图1示出了用于内存访问跟踪的程序插装的示意图。如图所示,程序经过插装后在运行时环境中运行,在运行过程中将通过插入的额外代码调用内存访问跟踪模块,内存访问跟踪模块将把内存访问事件存储在存储器中,并可从存储器中加载已存储的内存访问事件,以用于进行相关的分析。
例如,对于如下所述的简单的Java程序:
对其中的某些语句进行插装以便记录内存访问操作,插装后的程序如下(实际上,所有的插装都是针对二进制码或字节码进行的,而不是针对源码进行的,所示程序仅是为了例示插装时代码是如何修改的):
这样,在该程序运行过程中,当程序在类Simple的域i中写入一个新值时,方法addMemAccess将被调用。该方法addMemAccess具有4个参数,包括内存访问对象引用、域名称、访问类型和当前线程ID(标识)。这样,该方法将在存储器中记录一个包含上述信息的内存访问事件,并可以针对已记录的内存访问事件进行动态内存分析。
线程是一种独立的、可调度的指令流,是在进程上下文中运行的逻辑流程。由于当今的多核处理器对并行软件的需求,线程成为越来越重要的编程模型。虽然线程与进程相比是一种远为轻量级的执行单位,频繁地创建和终止线程仍然是很昂贵的。为了减少线程创建和终止,现代系统允许线程在其生命期中持续地获取和执行多个任务。
任务是一种代表指令序列的单独的作业,并且与其他作业完全独立。一个线程实际上包含多个任务,每个任务运行在线程的上下文中。当一个任务在线程中执行完毕后,线程获取准备好执行的另一个任务。线程中的任务通常是顺序执行的,而没有交错。典型的线程/任务模型是线程池和工作队列,其在行业软件中被广泛使用以提高系统吞吐量和性能。
由于动态内存分析工具应当记录每一次内存访问事件,随着程序的运行,将有越来越多的内存访问事件被记录在存储器(例如内存)中,这样,内存开销将会越来越大,与此同时,动态内存分析将变得越来越慢。
图2示出了两种示例性应用在使用程序插装进行动态内存分析前后的内存占用的比较。如图所示,对于WAS Trade应用,动态内存分析的内存开销是3.3倍,而对于Tomcat应用,动态内存分析的内存开销是3-5倍。可见,在动态内存分析中跟踪内存访问将带来极大的额外内存占用。
因此,本领域中需要一种能够减少运行时内存分析中的内存开销从而使运行时内存分析更为高效的方法。
发明内容
在本发明的一个方面,提出了一种用于辅助内存分析的方法,包括:为程序运行中的每一个任务分配一个唯一的ID(标识);记录程序运行过程中发生的内存访问事件,包括进行内存访问的任务的ID;响应于一任务结束,发出任务结束通知,该任务结束通知包括该结束任务的ID;以及响应于该任务结束通知,释放内存中具有该结束任务的ID的所有内存访问事件。
在本发明的另一个方面,提出了一种用于辅助内存分析的系统,包括:任务ID分配模块,用于为程序运行中的每一个任务分配一个唯一的ID;内存访问跟踪模块,用于记录程序运行过程中发生的内存访问事件,包括进行内存访问的任务的ID;任务结束通知模块,用于响应于一任务结束,发出任务结束通知,该任务结束通知包括该结束任务的ID;以及任务跟踪处理模块,用于响应于该任务结束通知,释放内存中具有该结束任务的ID的所有内存访问事件。
附图说明
所附权利要求中阐述了被认为是本发明的特点的创造性特征。但是,通过参照附图阅读下面对说明性实施例的详细说明可更好地理解发明本身以及其优选使用模式、目标、特征以及优点,在附图中:
图1是用于内存访问跟踪的程序插装的示意图;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于国际商业机器公司,未经国际商业机器公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/200910175692.2/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种五子棋游戏装置
- 下一篇:冷量可变式旋转压缩机的控制方法及其应用