Java内存泄漏规约及其工具研究

来源 :东南大学 | 被引量 : 0次 | 上传用户:myplucky
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
虽然Java语言有自己的垃圾回收机制,但是在Java软件中仍然存在着内存泄漏问题。Java的内存泄漏主要因无用对象没有断开引用造成。它可能影响程序的正常执行,特别是对于那些长期运行的程序,内存泄漏可能造成可用内存不足,影响程序性能,甚至导致程序崩溃。鉴于内存泄漏错误的严重性,必须对其进行研究,寻找解决泄漏的有效方法,从而最终提高软件质量。目前对Java内存泄漏的研究大都集中在发现泄漏现象之后的泄漏原因定位及泄漏修复上,而关于如何通过测试等手段发现泄漏现象的研究极少。不先发现内存泄漏现象的存在,就无法展开泄漏原因的定位及泄漏修复研究。在通过测试发现泄漏现象方面,目前判定程序是否存在泄漏主要依靠测试人员的经验。少数研究利用断言系统为泄漏判定提供部分支持,但它们大都需要用户对软件细节具有深入理解,而且判定是否存在泄漏的断言代码散布在程序中,难以维护。  本文定义了一种新的泄漏规约语言LeakSpec,并且开发了一个支持该规约语言的规约检查器LeakSpecTool,将经验性的人工泄漏判定,转化为基于规约语言的自动泄漏判定。泄漏规约语言语法与AspectJ类似,支持针对检查点和事务的规约,具有较强的表达能力与抽象性,利于用户编写自己的规约来测试软件中是否存在内存泄漏。同时我们也提供一个运行时(runtime)系统来帮助用户完成对待测试软件的内存信息的获取,使用户能更容易的编写规约文件。LeakSpecTool工具可以加载用户编写的规约与被测试软件一起运行来完成对内存泄漏的测试发现。利用AOP技术,规约系统可以使用户在不改变源码的基础上完成对软件的内存泄漏测试。我们在开源软件上进行了实验论证,结果表明本文的泄漏规约及工具能比较有效地支持Java软件的内存泄漏发现。
其他文献
计算机网络和通信技术的发展不断改变着人们工作和生活的方式。具有更大带宽、融合诸多类型有线和无线网络的下一代互联网NGI(NextGenerationInternet)为人们提供了更灵活、
移动自组织网络是一种新型分布式系统,它不依赖基础设施,可用于人类无法或不便直接介入的特殊场景。近似一致性是经典一致性问题的弱化形式,它允许各参与节点在达成一致时存在可
立体视觉坐标测量技术作为一种以立体视觉和光学成象原理为基础的非接触式三维测量技术,以其非接触性、并发测量速度快以及精度高等优点广泛应用于工业三维测量、虚拟现实建
场景中支撑关系提取是场景结构分析的重要内容,通过提取场景中的支撑关系能够获悉场景中不同目标之间的联系,对场景理解有着重要的意义。随着深度采集设备的发展,人们已经能
信息过载与信息安全问题随着网络的发展逐渐引起人们的重视,如何从海量信息中快速获取用户希望得到的信息对安全机制和推荐系统提出了更高的要求。对于信息安全,过往的研究主要
进程迁移系统能提高分布式系统的负载平衡性和可靠性,但在这一研究领域,国外处于领先地位。由于进程迁移几乎都是在各商用操作系统中实现的,其源代码不公开,所以很难得到广泛
软件的可测试性作为一个软件度量指标,是指软件在任意给定输入集合下进行测试的过程中,其中存在的错误能够被揭示出来的概率。开展对软件可测试性的研究有助于确定软件为了达
端到端的伪线仿真是在包交换网络上提供模拟传统L1和L2层网络业务的机制。端到端的伪线仿真技术的成熟和应用,将使得电信运营商在只建设和运营维护一个融合的IP网络的情况下,
目标跟踪是计算机视觉领域的重要任务之一,在军事、商业、医学等领域均有重要应用价值。目标跟踪的主要挑战在于如何区分并处理目标外观发生的本征和非本征变化,因此,鲁棒性
随着整个社会自动化和信息化的发展,人们对安全可靠的个人身份认证技术有了较高的要求。传统的个人身份认证技术的局限性及弊端日渐明显,而生物识别技术以其独有的优势成为了新