1、垃圾回收语言中的内存泄漏检测方法答辩人:杜伊 导 师:洪玫教授软件学院 软件工程专业2014年05月19日目录1234研究背景及价值主要工作系统文献综述方法文献计量分析结果5678文献综述结果分析趋势和挑战我的收获Q&A01/研究背景及价值P1研究背景内存泄漏后果降低程序性能内存耗尽,程序崩溃加快程序老化,增加维护难度课题研究现状检测难度大国外:2000年开始研究国内:2003年开始研究没有一篇关于此课题的综述01/研究背景及价值 为研究领域的学者提供了综合性的参考(如:选择题目等方面)为工业界应用技术的选择,提供了决策性的参考 可用于教学材料参考这样一篇综述性的论文,主要做出的贡献体现在三点
2、:P2研究意义及价值02/主要工作利用系统文献综述方法对于垃圾回收语言中的内存泄漏检测方法与工具进行综述报告综述报告。03/系统文献综述方法系统文献综述(systematic literature review),简称系统综述,是主要在医学领域和社会学研究领域针对某一个研究性问题开展的基于文献的系统化综述方法,并于2004年引入软件工程领域。系统文献综述的过程包含3个主要的阶段:制定综述方案:主要进行综述需求分析,明确综述的目的,设计开展综述的规程,以指导后期的文献收集等工作;开展综述:根据综述方案预定的目标,按照综述步骤进行文献收集,主要工作包括确定主要的文献来源、确定收录标准、实现文献质量
3、评价、开展数据抽取与综合等工作;形成综述报告:对于综述进行总结。P1方法简介03/系统文献综述方法文献综述工作使用的搜索工具如下:搜索引擎:Google,Google Scholar,IEEE Xplore;数据库:IEEE Digital Library,CNKI,万方,ACM数据库;期刊EI和SCI,会议(国外的国际会议),学位论文库(博士论文)。P2文献来源03/系统文献综述方法采用的关键词:memory leakjava memory leakmemory leak detectionmemory leak analysismemory error analysismanaged la
4、nguagegarbage collectionmemory managementstatic analysisdynamic analysis P3文献检索规则二级检索:搜索到的论文的关键词搜索到的论文的参考文献检索到的文献数量有限03/系统文献综述方法若论文是针对垃圾回收语言中的内存泄漏检测的,将其包括进来,并标记为重点阅读对象若论文是关于内存管理或垃圾回收的,将其包括进来,因为充分了解内存管理机制和垃圾回收方法可以帮助我们做好研究只选取篇幅在5篇以上的文章(即不要短文)主要以外文文献为主浏览每一篇文章,根据文章与本文研究主题的相关度标记等级,等级最高的为五颗星,即与研究主题非常相关,以此
5、类推对于检索出来的内存泄漏专利,只作为了解,不作为最后综述参考对象P4文献筛选原则04/文献计量分析结果结果分析:结果分析:研究垃圾回收语言内存泄漏检测方法的学者在逐年增多,但总体来讲,研究此课题的学者还是相对较少。说明该研究并不是热门研究,因为确实本项研究比较偏向应用型。P1文献年代分布04/文献计量分析结果结果分析:结果分析:会议论文最多,期刊其次P2期刊类型分布04/文献计量分析结果结果分析:结果分析:可以看到,最高发文量才4,也进一步说明了该课题并不是研究的热点。也可以看出该课题的领军人物是McKinley,Kathryn S.等人。另外,作者合作关系图帮助了解哪些学者之间在相互合作,
6、以及学者的贡献大小。P3文献作者及合作度分析04/文献计量分析结果结果分析:结果分析:这些高频关键词都非常符合本文的研究主题,因此参考这些文献写出来的综述具有一定的可信度。P4关键词统计分析04/文献计量分析结果结果分析:结果分析:论文的被引用次数,在一定程度上反应了论文的质量,可以参考论文的被引用次数来挑选高质量的文献作为参考。P5文献的被引用次数统计位次文献名称被引次数1Object ownership profiling:A technique for finding and fixing memory leaks1312Inferring weak references for fix
7、ing Java memory leaks993A statistical approach for identifying memory leaks in cloud applications914Automated statistical approach for memory leak detection:Case studies835Improving Statistical Approach for Memory Leak Detection Using Machine Learning756Profiling object life ranges for detecting mem
8、ory leaks in Java virtual machine707Bell:bit-encoding online memory leak detection608Diagnosing memory leaks using graph mining on heap dumps599A self-healing mechanism for memory leak4410VM-level memory monitoring for resolving performance problems3905/文献综述结果分析P1本节大纲05/文献综述结果分析内存泄漏:内存泄漏:1)指针丢失:2)不必
9、要的引用:P2内存泄漏原因垃圾回收语言中的内存泄漏05/文献综述结果分析分离逻辑和分离逻辑和bi-bi-abductiveabductive结合的静态检测算法结合的静态检测算法:前向符号执行和逆向预计算的双向算法 Memory Leaks Detection in Java by Bi-abductive Inference针对数组(针对数组(ArrayArray)中的内存泄漏检测方法)中的内存泄漏检测方法:算法的结果可以被GC进一步利用,从而回收更多“垃圾”。Automatic removal of array memory leaks in Java P3静态内存泄漏检测方法05/文献综述
10、结果分析JSWhizJSWhiz工具:工具:专门针对JavaScript的静态内存泄漏检测工具,开源 JSWhiz:static analysis for JavaScript memory leaksLeakCheckerLeakChecker工具:工具:以loop为中心,代价小,且误报率低 Leakchecker:Practical static memory leak detection for managed languagesP4静态内存泄漏检测工具05/文献综述结果分析基于统计学(基于统计学(STATISTICALSTATISTICAL)的方法)的方法:基于年代假设的思想,内存开销
11、小,且能指出泄漏的源头,便于修复工作基于容器(基于容器(container-basedcontainer-based)的方法:)的方法:关注容器对象及操作,并同时使用内存消耗和元素的闲置时间两大特征来判断容器是否具有泄漏操作两段式(两段式(two-phasetwo-phase)方法)方法离线和在线结合:离线和在线结合:离线分析和在线检测结合使用,使得时间开销小;且是图形化界面,便于操作图形挖掘(图形挖掘(Graph MiningGraph Mining)方法:)方法:将图形挖掘技术运用到内存泄漏检测中,使用离线分析的方式,可以找到确定的和潜在的泄漏。堆扫描方法:堆扫描方法:扫描每个对象的生命时
12、间,“全扫描机制”和“增量扫描机制”P5动态内存泄漏检测方法05/文献综述结果分析FindleaksFindleaks工具:工具:使用AspectJ的轻量级的工具,以指出不被需要的引用是在源代码的何处创建的CorkCork工具:工具:基于类型的动态heap-summarization技术,Cork具有精确性、可扩展性、高效性、低时间开销、低空间开销LeakBotLeakBot工具:工具:不针对单个对象,而是针对数据结构层次检测,工具易用LeakChaserLeakChaser工具:工具:三层机制(three-tier)方法,不同水平的程序员都可以使用P6动态内存泄漏检测工具06/趋势与挑战从文
13、章的结构也可以看出来,静态检测技术,较之动态检测技术来说,要少很多,这是一个趋势,今后可能也将维持该趋势。P1趋势检测方法优点缺点静态内存泄漏检测1.不需要运行源代码2.代码检测覆盖率高3.漏报率低1.程序没在真实环境下运行 2.误报率高3.需要分析时间较长动态内存泄漏检测1.分析时间较短2.检测结果准确3.在真实运行环境下检测1.代码覆盖率低2.漏报率高06/趋势与挑战目前此课题遇到的挑战有:方法或工具需要的代价(overheads)太大,使得其无法真正被投入到实际应用中使用;某些方法或工具需要使用者具有非常扎实的知识,或者对所使用的程序要非常熟悉,这使得使用者必须花大量的时间来了解某方面的知识或熟悉程序,降低了使用者的效率;某些技术不能够直接指出内存泄漏具体是由哪些代码引起的,不能帮助使用者快速的定位泄漏的位置,以进行修复;静态检测技术误报率高,动态检测技术漏报率高的问题还有待解决。P2挑战07/我的收获1.对系统文献综述方法整个流程有了全面的认识2.学会了很多文献管理工具和分析工具的使用3.对垃圾回收和内存泄漏相关知识有了更加深刻的理解4.外文文献阅读能力得到了提高 通过这样一篇文献综述工作,我收获颇多,学习能力也得到了不少提升,主要体现在以下几个方面:08/Q&A不足之处,请各位专家老师批评指正!谢谢聆听
侵权处理QQ:3464097650--上传资料QQ:3464097650
【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。