Java內(nèi)存泄漏發(fā)現(xiàn)技術(shù)研究
本文關(guān)鍵詞:Java內(nèi)存泄漏發(fā)現(xiàn)技術(shù)研究,,由筆耕文化傳播整理發(fā)布。
【摘要】:盡管存在垃圾回收機(jī)制,但Java程序仍可能存在內(nèi)存泄漏問題。內(nèi)存泄漏問題可能影響程序性能,甚至導(dǎo)致崩潰。目前的Java內(nèi)存泄漏問題研究主要關(guān)注發(fā)現(xiàn)泄漏現(xiàn)象后如何找出泄漏原因,關(guān)于第一步如何發(fā)現(xiàn)泄漏現(xiàn)象,相關(guān)研究較為缺乏,缺少成熟有效的解決方案。為此,論文對Java內(nèi)存泄漏的發(fā)現(xiàn)技術(shù)進(jìn)行了研究。從動(dòng)態(tài)和靜態(tài)兩個(gè)角度,分別提出了發(fā)現(xiàn)潛在泄漏的方法:(1)動(dòng)態(tài)方面,提出一種面向泄漏的單元測試生成方法。該方法首先識別出具有泄漏風(fēng)險(xiǎn)的模塊,為其生成普通單元測試,然后作面向泄漏的加強(qiáng),最終生成具有泄漏檢測能力的單元測試來發(fā)現(xiàn)內(nèi)存泄漏現(xiàn)象。在單元級發(fā)現(xiàn)泄漏,有利于盡早排除內(nèi)存泄漏錯(cuò)誤。(2)靜態(tài)方面,我們發(fā)現(xiàn)許多不良的編程模式容易導(dǎo)致泄漏,為此提出一種基于模式的泄漏檢測方法。該方法可以通過靜態(tài)掃描源代碼,發(fā)現(xiàn)使用弱引用機(jī)制的代碼中,錯(cuò)誤使用Weak Hash Map等結(jié)構(gòu)造成的泄漏。通過靜態(tài)分析,能夠發(fā)現(xiàn)泄漏缺陷,避免泄漏發(fā)生。本文基于JUnit、Code Pro Analytix、Soot等工具實(shí)現(xiàn)了我們的泄漏發(fā)現(xiàn)系統(tǒng),該系統(tǒng)能夠發(fā)現(xiàn)開源代碼中已經(jīng)證實(shí)存在的內(nèi)存泄漏錯(cuò)誤,表明工具具有一定的泄漏發(fā)現(xiàn)能力,能夠幫助用戶排除泄漏,提高軟件質(zhì)量。
【關(guān)鍵詞】:Java 內(nèi)存泄漏 單元測試 測試生成 靜態(tài)檢測
【學(xué)位授予單位】:南京航空航天大學(xué)
【學(xué)位級別】:碩士
【學(xué)位授予年份】:2015
【分類號】:TP312.2;TP309
【目錄】:
- 摘要4-5
- Abstract5-10
- 第一章 緒論10-14
- 1.1 研究背景和意義10
- 1.2 國內(nèi)外研究現(xiàn)狀10-12
- 1.3 本文的主要工作12
- 1.4 本文的組織結(jié)構(gòu)12-14
- 第二章 相關(guān)概念和方法14-20
- 2.1 依賴分析14-16
- 2.1.1 控制依賴14-16
- 2.1.2 數(shù)據(jù)依賴16
- 2.2 指向分析16-17
- 2.3 溢出分析17-19
- 2.3.1 已有的溢出分析17-18
- 2.3.2 改進(jìn)的溢出分析18-19
- 2.4 本章小結(jié)19-20
- 第三章 內(nèi)存泄漏單元測試20-34
- 3.1 風(fēng)險(xiǎn)泄漏模塊20-22
- 3.1.1 易直接造成內(nèi)存泄漏的方法20-21
- 3.1.2 易累積新創(chuàng)建對象導(dǎo)致泄漏的方法21
- 3.1.3 易累積吸收方法參數(shù)導(dǎo)致泄漏的方法21-22
- 3.2 面向內(nèi)存泄漏的單元測試生成22
- 3.3 識別易泄漏的方法22-26
- 3.3.1 識別易直接造成泄漏的方法23-24
- 3.3.2 識別易累積新創(chuàng)建對象導(dǎo)致泄漏的方法24-25
- 3.3.3 識別易累積吸收方法參數(shù)導(dǎo)致泄漏的方法25-26
- 3.4 生成單元測試26-29
- 3.4.1 生成易直接構(gòu)成內(nèi)存泄漏的方法的單元測試26-27
- 3.4.2 生成易累積新創(chuàng)建對象導(dǎo)致泄漏的方法的單元測試27-28
- 3.4.3 生成易累積吸收方法參數(shù)導(dǎo)致泄漏的方法的單元測試28-29
- 3.5 案例研究29-33
- 3.5.1 對易直接造成泄漏的方法的案例研究29-30
- 3.5.2 對易累積新創(chuàng)建對象導(dǎo)致泄漏的方法的案例研究30-32
- 3.5.3 對易累積吸收方法參數(shù)導(dǎo)致泄漏的方法的案例研究32-33
- 3.6 本章小結(jié)33-34
- 第四章 靜態(tài)檢測內(nèi)存泄漏34-44
- 4.1 典型泄漏模式34-36
- 4.2 泄漏模式靜態(tài)檢測36-41
- 4.2.1 構(gòu)建指向圖37
- 4.2.2 收集WeakHashMap型容器變量37-38
- 4.2.3 識別加入WeakHashMap的key和value變量38-40
- 4.2.4 泄漏模式判定40-41
- 4.3 實(shí)驗(yàn)分析41-43
- 4.3.1 實(shí)驗(yàn)對象41
- 4.3.2 實(shí)驗(yàn)結(jié)果分析與討論41-43
- 4.4 本章小結(jié)43-44
- 第五章 內(nèi)存泄漏發(fā)現(xiàn)系統(tǒng)的實(shí)現(xiàn)44-53
- 5.1 泄漏發(fā)現(xiàn)系統(tǒng)結(jié)構(gòu)44-45
- 5.2 基于的框架45-47
- 5.3 單元測試系統(tǒng)47-50
- 5.4 靜態(tài)泄漏模式檢測系統(tǒng)50-52
- 5.5 本章小結(jié)52-53
- 第六章 總結(jié)與展望53-54
- 6.1 總結(jié)53
- 6.2 未來工作展望53-54
- 參考文獻(xiàn)54-58
- 致謝58-59
- 攻讀碩士學(xué)位期間完成的論文以及學(xué)術(shù)成果59
【相似文獻(xiàn)】
中國期刊全文數(shù)據(jù)庫 前10條
1 Microsoft;使用Microsoft Visual C++來檢測和隔離內(nèi)存泄漏[J];電腦編程技巧與維護(hù);2000年07期
2 夏斌強(qiáng);;淺談內(nèi)存泄漏[J];程序員;2003年10期
3 鐘靈,鄒兆佳,馮大春;三種內(nèi)存泄漏檢測方法的比較[J];計(jì)算機(jī)時(shí)代;2005年05期
4 吳民,涂奉生;內(nèi)存泄漏的動(dòng)態(tài)跟蹤分析[J];計(jì)算機(jī)工程與應(yīng)用;2005年14期
5 林麗芬;;關(guān)于內(nèi)存泄漏的檢測與防范[J];福建教育學(xué)院學(xué)報(bào);2007年07期
6 徐紅梅;劉亭利;;談在c++編程中的內(nèi)存泄漏問題[J];福建電腦;2010年06期
7 樸艷麗;張楠;;編程實(shí)踐中內(nèi)存泄漏的檢測與處理[J];中國傳媒科技;2012年24期
8 胡燕;龔育昌;孫偉峰;趙振西;;一種混合式內(nèi)存泄漏靜態(tài)檢測方法[J];小型微型計(jì)算機(jī)系統(tǒng);2008年10期
9 陸偉;朱怡安;張龍妹;馬春燕;;一種解決內(nèi)存泄漏問題的自愈機(jī)制[J];西北工業(yè)大學(xué)學(xué)報(bào);2011年04期
10 段飛鵬;朱怡安;黃姝娟;趙聰;;一種系統(tǒng)級內(nèi)存泄漏的自愈機(jī)制[J];計(jì)算機(jī)與現(xiàn)代化;2014年03期
中國重要會(huì)議論文全文數(shù)據(jù)庫 前2條
1 張威;薛廷梅;盧慶齡;;軟件內(nèi)存泄漏缺陷分析與測試方法研究[A];第十屆全國容錯(cuò)計(jì)算學(xué)術(shù)會(huì)議論文集[C];2003年
2 張威;李輝;畢學(xué)軍;宮云戰(zhàn);;內(nèi)存泄漏故障靜態(tài)測試方法研究[A];第四屆中國測試學(xué)術(shù)會(huì)議論文集[C];2006年
中國重要報(bào)紙全文數(shù)據(jù)庫 前2條
1 中國人民大學(xué)信息學(xué)院 孟澤;內(nèi)存泄漏的危害以及防止辦法[N];中國計(jì)算機(jī)報(bào);2008年
2 信息產(chǎn)業(yè)部數(shù)據(jù)所多媒體室 廖錚;處理內(nèi)存泄漏的MFC方法[N];計(jì)算機(jī)世界;2000年
中國碩士學(xué)位論文全文數(shù)據(jù)庫 前8條
1 葉瑞浩;Cloud Foundry中Java應(yīng)用集合類內(nèi)存泄漏檢測[D];浙江大學(xué);2016年
2 洪麗娟;Java內(nèi)存泄漏發(fā)現(xiàn)技術(shù)研究[D];南京航空航天大學(xué);2015年
3 柯平;內(nèi)存泄漏靜態(tài)檢測模型的設(shè)計(jì)與實(shí)現(xiàn)[D];北京郵電大學(xué);2009年
4 劉書文;C++類成員內(nèi)存泄漏模式研究及檢測方法[D];北京郵電大學(xué);2015年
5 王皓;一種內(nèi)存泄漏檢測技術(shù)的研究和實(shí)現(xiàn)[D];北京交通大學(xué);2008年
6 齊華軍;嵌入式linux系統(tǒng)中的內(nèi)存泄漏的研究[D];天津工業(yè)大學(xué);2006年
7 王U
本文編號:344227
本文鏈接:http://sikaile.net/shoufeilunwen/xixikjs/344227.html