一种基于访问路径和执行索引的堆区对象比较方法

来源 :南京大学 | 被引量 : 0次 | 上传用户:wcxydm
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
随着信息技术的高速发展,软件产品被应用到现代生产生活的各个方面。软件产品的广泛应用又反过来推动了软件的设计、开发、维护、分析等技术的发展。其中面向对象相关的语言、技术、思想占了很重要的位置。我们知道很多流行编程语言都支持面向对象开发。无论是在开源软件、还是在企业应用中,使用现代面向对象语言开发的程序都广泛使用动态分配堆区对象技术。这导致程序动态分析技术,例如内存泄漏分析、自动调试等,依赖各种从堆区获得的有关对象信息。而其中识别堆区差异性的问题是众多重要问题中的一个,而且很多工业级开发工具和开源工具中也提供了一些解决方法。但是,现存的堆区比较工具通常只使用单一信息:要么是只使用对象的地址比较,适用范围小;要么是只使用空间结构信息(访问路径),要么是只使用上下文信息(执行索引)。这些方法只提供相对不太准确的信息,对于动态分析中更高级的要求并不能满足。针对这个挑战,本文提出了一种新的堆区比较方法,该方法结合访问路径和执行索引,提供了精确的堆区对象匹配信息。在此基础上我们设计与实现了针对Java程序的原型工具APEI,并利用该原型工具针对三种不同的动态分析任务进行了案例分析,具体而言,本文的主要工作如下:1.提出了新的堆区对象比较方法:APEI。在分析了现有不同解决方法,特别是分析了基于访问路径的堆区比较方法和基于执行索引的堆区比较方法的基础上,该方法结合两者的优劣,提供更精确的比较信息。2.基于我们新方法的原理,在开源Java虚拟机Open JDK的基础上,实现了一个能够建立执行索引、捕获内存快照并进行堆区对象比较的原型系统。该系统分为在线跟踪器和离线分析器两部分,前者使用了JVMTI开发接口,在运行时记录相关重要信息(对象创建、方法执行等信息);后者使用jhat工具包分析内存快照,解析记录的对象信息,进行对象比较,并最终给出堆内存快照分析统计报告。3.本文进行了详细的案例研究分析。选择现实世界中广泛应用的软件,即Eclipse Compiler for Java(ECJ)、Apache Derby和Apache FTP Server作为研究对象,进行了性能分析、精度比较,并给出了详实的数据。
其他文献
光纤同轴混合网(HFC)是一种刚刚兴起的宽带通信体制,代表了一种通向宽带通信的新途径.该文着重讨论了基于HFC的VOD模型极其在本地网络中的应用,提出了在HFC这一最新的不对称
该文从分析中发展(中外建发展股份有限公司)ZFZ-CIMS系统的业务需求出发,阐述了ZFZ-CIMS系统中技术上的关键问题与解决上述问题相关的CORBA技术、客户机/服务器技术、事务处
源代码分析是软件测试、系统分析和软件开发领域中的重要组成部分。近年来,源码分析工具的出现,为程序员分析源代码提供了很大便利。但是对于makefile组织的工程源码,其各个
该文首先对安全网络系统的本质特征进行了研究.作者根据NRM、ISO7498-2和ECMA的研究成果,从工程应用实践的角度出发,分别对安全网络系统"安全支柱"和所应提供的"安全服务"进
该文主要研究了基于XML的WEB三层应用体系结构和原有的WEB应用体系结构之间的区别.对这两者研究人员分别构造了原型,并对原型做了测试,对测试结果进行了分析,得中体系结构的
该文在全面深入地研究和剖析了这些算法的基础上,为克服早熟问题,把待优化问题分为连续和离散两种类型.对于较为简单的连续问题,文中提出了基于切面上升的狭义遗传算法.主要
随着计算机技术和网络技术的迅猛发展,海量的图像信息都在以多媒体信息的方式被数字化,如何高效的检索这些数字化的图像数据成为了迫切需要解决的问题。基于内容的图像检索技术
该文介绍多点合作设计系统(MLCDS)的概念和发展概况,论述了多点合作设计系统研制的意义.提出了运用面向对象开发方法进行多点合作设计系统开发的思想,并根据目前情况,提出实