Java内存泄漏发现技术研究
本文关键词:Java内存泄漏发现技术研究,,由笔耕文化传播整理发布。
【摘要】:尽管存在垃圾回收机制,但Java程序仍可能存在内存泄漏问题。内存泄漏问题可能影响程序性能,甚至导致崩溃。目前的Java内存泄漏问题研究主要关注发现泄漏现象后如何找出泄漏原因,关于第一步如何发现泄漏现象,相关研究较为缺乏,缺少成熟有效的解决方案。为此,论文对Java内存泄漏的发现技术进行了研究。从动态和静态两个角度,分别提出了发现潜在泄漏的方法:(1)动态方面,提出一种面向泄漏的单元测试生成方法。该方法首先识别出具有泄漏风险的模块,为其生成普通单元测试,然后作面向泄漏的加强,最终生成具有泄漏检测能力的单元测试来发现内存泄漏现象。在单元级发现泄漏,有利于尽早排除内存泄漏错误。(2)静态方面,我们发现许多不良的编程模式容易导致泄漏,为此提出一种基于模式的泄漏检测方法。该方法可以通过静态扫描源代码,发现使用弱引用机制的代码中,错误使用Weak Hash Map等结构造成的泄漏。通过静态分析,能够发现泄漏缺陷,避免泄漏发生。本文基于JUnit、Code Pro Analytix、Soot等工具实现了我们的泄漏发现系统,该系统能够发现开源代码中已经证实存在的内存泄漏错误,表明工具具有一定的泄漏发现能力,能够帮助用户排除泄漏,提高软件质量。
【关键词】:Java 内存泄漏 单元测试 测试生成 静态检测
【学位授予单位】:南京航空航天大学
【学位级别】:硕士
【学位授予年份】:2015
【分类号】:TP312.2;TP309
【目录】:
- 摘要4-5
- Abstract5-10
- 第一章 绪论10-14
- 1.1 研究背景和意义10
- 1.2 国内外研究现状10-12
- 1.3 本文的主要工作12
- 1.4 本文的组织结构12-14
- 第二章 相关概念和方法14-20
- 2.1 依赖分析14-16
- 2.1.1 控制依赖14-16
- 2.1.2 数据依赖16
- 2.2 指向分析16-17
- 2.3 溢出分析17-19
- 2.3.1 已有的溢出分析17-18
- 2.3.2 改进的溢出分析18-19
- 2.4 本章小结19-20
- 第三章 内存泄漏单元测试20-34
- 3.1 风险泄漏模块20-22
- 3.1.1 易直接造成内存泄漏的方法20-21
- 3.1.2 易累积新创建对象导致泄漏的方法21
- 3.1.3 易累积吸收方法参数导致泄漏的方法21-22
- 3.2 面向内存泄漏的单元测试生成22
- 3.3 识别易泄漏的方法22-26
- 3.3.1 识别易直接造成泄漏的方法23-24
- 3.3.2 识别易累积新创建对象导致泄漏的方法24-25
- 3.3.3 识别易累积吸收方法参数导致泄漏的方法25-26
- 3.4 生成单元测试26-29
- 3.4.1 生成易直接构成内存泄漏的方法的单元测试26-27
- 3.4.2 生成易累积新创建对象导致泄漏的方法的单元测试27-28
- 3.4.3 生成易累积吸收方法参数导致泄漏的方法的单元测试28-29
- 3.5 案例研究29-33
- 3.5.1 对易直接造成泄漏的方法的案例研究29-30
- 3.5.2 对易累积新创建对象导致泄漏的方法的案例研究30-32
- 3.5.3 对易累积吸收方法参数导致泄漏的方法的案例研究32-33
- 3.6 本章小结33-34
- 第四章 静态检测内存泄漏34-44
- 4.1 典型泄漏模式34-36
- 4.2 泄漏模式静态检测36-41
- 4.2.1 构建指向图37
- 4.2.2 收集WeakHashMap型容器变量37-38
- 4.2.3 识别加入WeakHashMap的key和value变量38-40
- 4.2.4 泄漏模式判定40-41
- 4.3 实验分析41-43
- 4.3.1 实验对象41
- 4.3.2 实验结果分析与讨论41-43
- 4.4 本章小结43-44
- 第五章 内存泄漏发现系统的实现44-53
- 5.1 泄漏发现系统结构44-45
- 5.2 基于的框架45-47
- 5.3 单元测试系统47-50
- 5.4 静态泄漏模式检测系统50-52
- 5.5 本章小结52-53
- 第六章 总结与展望53-54
- 6.1 总结53
- 6.2 未来工作展望53-54
- 参考文献54-58
- 致谢58-59
- 攻读硕士学位期间完成的论文以及学术成果59
【相似文献】
中国期刊全文数据库 前10条
1 Microsoft;使用Microsoft Visual C++来检测和隔离内存泄漏[J];电脑编程技巧与维护;2000年07期
2 夏斌强;;浅谈内存泄漏[J];程序员;2003年10期
3 钟灵,邹兆佳,冯大春;三种内存泄漏检测方法的比较[J];计算机时代;2005年05期
4 吴民,涂奉生;内存泄漏的动态跟踪分析[J];计算机工程与应用;2005年14期
5 林丽芬;;关于内存泄漏的检测与防范[J];福建教育学院学报;2007年07期
6 徐红梅;刘亭利;;谈在c++编程中的内存泄漏问题[J];福建电脑;2010年06期
7 朴艳丽;张楠;;编程实践中内存泄漏的检测与处理[J];中国传媒科技;2012年24期
8 胡燕;龚育昌;孙伟峰;赵振西;;一种混合式内存泄漏静态检测方法[J];小型微型计算机系统;2008年10期
9 陆伟;朱怡安;张龙妹;马春燕;;一种解决内存泄漏问题的自愈机制[J];西北工业大学学报;2011年04期
10 段飞鹏;朱怡安;黄姝娟;赵聪;;一种系统级内存泄漏的自愈机制[J];计算机与现代化;2014年03期
中国重要会议论文全文数据库 前2条
1 张威;薛廷梅;卢庆龄;;软件内存泄漏缺陷分析与测试方法研究[A];第十届全国容错计算学术会议论文集[C];2003年
2 张威;李辉;毕学军;宫云战;;内存泄漏故障静态测试方法研究[A];第四届中国测试学术会议论文集[C];2006年
中国重要报纸全文数据库 前2条
1 中国人民大学信息学院 孟泽;内存泄漏的危害以及防止办法[N];中国计算机报;2008年
2 信息产业部数据所多媒体室 廖铮;处理内存泄漏的MFC方法[N];计算机世界;2000年
中国硕士学位论文全文数据库 前8条
1 叶瑞浩;Cloud Foundry中Java应用集合类内存泄漏检测[D];浙江大学;2016年
2 洪丽娟;Java内存泄漏发现技术研究[D];南京航空航天大学;2015年
3 柯平;内存泄漏静态检测模型的设计与实现[D];北京邮电大学;2009年
4 刘书文;C++类成员内存泄漏模式研究及检测方法[D];北京邮电大学;2015年
5 王皓;一种内存泄漏检测技术的研究和实现[D];北京交通大学;2008年
6 齐华军;嵌入式linux系统中的内存泄漏的研究[D];天津工业大学;2006年
7 王U
本文编号:344227
本文链接:https://www.wllwen.com/shoufeilunwen/xixikjs/344227.html