欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種測(cè)試過(guò)程中內(nèi)存泄漏的監(jiān)控方法和裝置的制造方法

文檔序號(hào):9547096閱讀:360來(lái)源:國(guó)知局
一種測(cè)試過(guò)程中內(nèi)存泄漏的監(jiān)控方法和裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及軟件測(cè)試領(lǐng)域,尤其涉及一種測(cè)試過(guò)程中內(nèi)存泄漏的監(jiān)控方法和裝置。
【背景技術(shù)】
[0002]Java跟C++語(yǔ)目不一樣,C++語(yǔ)目有明確的內(nèi)存泄漏指向一塊內(nèi)存的指針被重新賦值后,而該內(nèi)存又沒(méi)被回收,即由于再也無(wú)法訪問(wèn)而導(dǎo)致內(nèi)存泄漏。但Java不會(huì)出現(xiàn)這種情況。雖然不會(huì)出現(xiàn),但由于Java的引用計(jì)數(shù)機(jī)制,也容易出現(xiàn)一些我們不希望出現(xiàn)的內(nèi)存泄露,例如一個(gè)小對(duì)象由于人為失誤忘記刪除對(duì)其引用,導(dǎo)致該小對(duì)象所引用的所有對(duì)象都無(wú)法被回收。
[0003]由于Java語(yǔ)言的特性,開(kāi)發(fā)人員是不需要關(guān)注對(duì)象的回收的。但由于有可能是開(kāi)發(fā)人員在開(kāi)發(fā)過(guò)程中,由于某些人為原因?qū)е乱恍?duì)象沒(méi)有被回收,而使得軟件所占用的越來(lái)越大,這是不希望發(fā)生的。

【發(fā)明內(nèi)容】

[0004]本發(fā)明提出了一種測(cè)試過(guò)程中內(nèi)存泄漏的監(jiān)控方法和裝置,其通過(guò)幽靈引用和引用隊(duì)列監(jiān)控對(duì)象是否已經(jīng)被回收,再根據(jù)監(jiān)控的結(jié)果判斷監(jiān)控的對(duì)象是否已經(jīng)內(nèi)存泄漏,在內(nèi)存泄漏時(shí)生成hprof文件,實(shí)現(xiàn)了自動(dòng)監(jiān)控內(nèi)存泄漏,記錄內(nèi)存泄漏的自動(dòng)定位,提高了監(jiān)控正確率和效率。
[0005]為實(shí)現(xiàn)上述設(shè)計(jì),本發(fā)明采用以下技術(shù)方案:
[0006]一方面采用一種測(cè)試過(guò)程中內(nèi)存泄漏的監(jiān)控方法,該方法包括:
[0007]在幽靈引用和引用隊(duì)列中添加軟件中需要判斷內(nèi)存泄漏的對(duì)象;
[0008]對(duì)軟件進(jìn)行測(cè)試,統(tǒng)計(jì)需要判斷內(nèi)存泄漏的對(duì)象的未被回收的次數(shù);
[0009]根據(jù)所述次數(shù)判斷所述次數(shù)對(duì)應(yīng)的對(duì)象是否內(nèi)存泄漏,若是,生成hprof文件。
[0010]另一方面采用一種測(cè)試過(guò)程中內(nèi)存泄漏的監(jiān)控裝置,該裝置包括:
[0011]監(jiān)控對(duì)象添加單元,用于在幽靈引用和引用隊(duì)列中添加軟件中需要判斷內(nèi)存泄漏的對(duì)象;
[0012]次數(shù)統(tǒng)計(jì)單元,用于對(duì)軟件進(jìn)行測(cè)試,統(tǒng)計(jì)需要判斷內(nèi)存泄漏的對(duì)象的未被回收的次數(shù);
[0013]內(nèi)存泄漏判斷單元,用于根據(jù)所述次數(shù)判斷所述次數(shù)對(duì)應(yīng)的對(duì)象是否內(nèi)存泄漏,若是,生成hprof文件。
[0014]本發(fā)明的有益效果在于:通過(guò)幽靈引用和引用隊(duì)列監(jiān)控對(duì)象是否已經(jīng)被回收,再根據(jù)監(jiān)控的結(jié)果判斷監(jiān)控的對(duì)象是否已經(jīng)內(nèi)存泄漏,在內(nèi)存泄漏時(shí)生成hprof文件,實(shí)現(xiàn)了自動(dòng)監(jiān)控內(nèi)存泄漏,記錄內(nèi)存泄漏的自動(dòng)定位,提高了監(jiān)控正確率和效率。
【附圖說(shuō)明】
[0015]為了更清楚地說(shuō)明本發(fā)明實(shí)施例中的技術(shù)方案,下面將對(duì)本發(fā)明實(shí)施例描述中所需要使用的附圖作簡(jiǎn)單的介紹,顯而易見(jiàn)地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)本發(fā)明實(shí)施例的內(nèi)容和這些附圖獲得其他的附圖。
[0016]圖1是本發(fā)明實(shí)施例提供的一種測(cè)試過(guò)程中內(nèi)存泄漏的監(jiān)控方法的第一個(gè)實(shí)施例方法流程圖。
[0017]圖2是本發(fā)明實(shí)施例提供的一種測(cè)試過(guò)程中內(nèi)存泄漏的監(jiān)控方法的第二個(gè)實(shí)施例方法流程圖。
[0018]圖3是本發(fā)明實(shí)施例提供的一種測(cè)試過(guò)程中內(nèi)存泄漏的監(jiān)控方法的第三個(gè)實(shí)施例的方法流程圖。
[0019]圖4是本發(fā)明實(shí)施例提供的一種測(cè)試過(guò)程中內(nèi)存泄漏的監(jiān)控裝置的第一個(gè)實(shí)施例的結(jié)構(gòu)方框圖。
[0020]圖5是本發(fā)明實(shí)施例提供的一種測(cè)試過(guò)程中內(nèi)存泄漏的監(jiān)控裝置的第二個(gè)實(shí)施例的結(jié)構(gòu)方框圖。
[0021]圖6是本發(fā)明實(shí)施例提供的一種測(cè)試過(guò)程中內(nèi)存泄漏的監(jiān)控裝置的第三個(gè)實(shí)施例的結(jié)構(gòu)方框圖。
[0022]圖7是本發(fā)明實(shí)施例所涉及的設(shè)備結(jié)構(gòu)方框圖。
【具體實(shí)施方式】
[0023]為使本發(fā)明解決的技術(shù)問(wèn)題、采用的技術(shù)方案和達(dá)到的技術(shù)效果更加清楚,下面將結(jié)合附圖對(duì)本發(fā)明實(shí)施例的技術(shù)方案作進(jìn)一步的詳細(xì)描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域技術(shù)人員在沒(méi)有作出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
[0024]請(qǐng)參考圖1,其是本發(fā)明實(shí)施例提供的測(cè)試過(guò)程中內(nèi)存泄漏的監(jiān)控方法的第一個(gè)實(shí)施例的方法流程圖。本實(shí)施例的測(cè)試過(guò)程中內(nèi)存泄漏的監(jiān)控方法主要應(yīng)用于各種基于Java語(yǔ)言開(kāi)發(fā)的軟件的測(cè)試,例如為安卓(Android)、Linux開(kāi)發(fā)的軟件。
[0025]如圖1所示,該測(cè)試過(guò)程中內(nèi)存泄漏的監(jiān)控方法,包括:
[0026]步驟S101:在幽靈引用和引用隊(duì)列中添加軟件中需要判斷內(nèi)存泄漏的對(duì)象。
[0027]Java語(yǔ)言本身提供有工具用來(lái)監(jiān)控對(duì)象在內(nèi)存中是否被回收,這個(gè)工具就是幽靈引用(Phantom Reference)及引用隊(duì)列(ReferenceQueue),在軟件開(kāi)發(fā)的過(guò)程中,將軟件中需要判斷內(nèi)存泄漏的對(duì)象在幽靈引用和引用隊(duì)列中添加監(jiān)控,在程序運(yùn)行的過(guò)程中,幽靈引用和引用隊(duì)列會(huì)監(jiān)控對(duì)象在內(nèi)存中的狀態(tài)變化,具體幽靈引用和引用隊(duì)列在Java語(yǔ)言中是慣用的語(yǔ)言工具,本專業(yè)人員對(duì)其都有一定程度了解,在此不再贅述。
[0028]步驟S102:對(duì)軟件進(jìn)行測(cè)試,統(tǒng)計(jì)需要判斷內(nèi)存泄漏的對(duì)象的未被回收的次數(shù)。
[0029]在軟件測(cè)試的過(guò)程中,從引用隊(duì)列中讀取監(jiān)控對(duì)象是否已經(jīng)被回收,并分別統(tǒng)計(jì)每個(gè)對(duì)象的未被回收的次數(shù)。
[0030]步驟S103:根據(jù)所述次數(shù)判斷所述次數(shù)對(duì)應(yīng)的對(duì)象是否內(nèi)存泄漏,若是,生成hprof文件。
[0031]不同用途或類(lèi)別的對(duì)象,其內(nèi)存泄漏的判斷標(biāo)準(zhǔn)各不相同,但是不管是哪種類(lèi)型的對(duì)象,內(nèi)存泄漏的判斷都是基于未回收的次數(shù)得到結(jié)果的。hprof文件是Java內(nèi)存中對(duì)象的引用樹(shù)結(jié)構(gòu)文件,用以記錄對(duì)象在內(nèi)存中的引用狀態(tài)。
[0032]綜上所述,本實(shí)施例通過(guò)幽靈引用和引用隊(duì)列監(jiān)控對(duì)象是否已經(jīng)被回收,再根據(jù)監(jiān)控的結(jié)果判斷監(jiān)控的對(duì)象是否已經(jīng)內(nèi)存泄漏,在內(nèi)存泄漏時(shí)生成hprof文件,實(shí)現(xiàn)了自動(dòng)監(jiān)控內(nèi)存泄漏,記錄內(nèi)存泄漏的自動(dòng)定位,提高了監(jiān)控正確率和效率。
[0033]請(qǐng)參考圖2,其是本發(fā)明實(shí)施例提供的測(cè)試過(guò)程中內(nèi)存泄漏的監(jiān)控方法的第二個(gè)實(shí)施例的方法流程圖。本實(shí)施例與方法第一個(gè)實(shí)施例的主要區(qū)別在于,進(jìn)一步說(shuō)明了添加需要判斷內(nèi)存泄漏的對(duì)象的具體過(guò)程以及一種判斷對(duì)象是否內(nèi)存泄漏的具體過(guò)程。
[0034]如圖2所示,該測(cè)試過(guò)程中內(nèi)存泄漏的監(jiān)控方法,包括:
[0035]步驟S201:在面向切面的語(yǔ)言中定義集合和操作;所述集合中的元素為軟件中需要判斷內(nèi)存泄漏的對(duì)象,所述操作為所述元素添加到幽靈引用和引用隊(duì)列中。
[0036]面向切面的編程主要實(shí)現(xiàn)的目的是對(duì)程序運(yùn)行過(guò)程進(jìn)行提取,它所面對(duì)的是處理過(guò)程中的某個(gè)步驟或階段,以獲得邏輯過(guò)程中各對(duì)象的動(dòng)作監(jiān)控。常用的面向切面的語(yǔ)言如aspectj,當(dāng)然,aspect j只是應(yīng)用范圍比較廣的一種工具,還可以使用其他的面向切面的語(yǔ)言。在本步驟中,aspectj可以定義一個(gè)集合,這個(gè)集合中的所有對(duì)象new出來(lái)的時(shí)候,做一些自定義的操作,主要是添加內(nèi)存泄漏監(jiān)控,另外還可以打log。結(jié)合起來(lái),就可以在自定義的集合中,new出對(duì)象時(shí)把對(duì)象監(jiān)控起來(lái)。
[0037]步驟S202:在幽靈引用和引用隊(duì)列中添加集合中的對(duì)象。
[0038]通過(guò)面向切面的編程可以實(shí)現(xiàn)大批量地添加對(duì)象,無(wú)需將每個(gè)對(duì)象都單獨(dú)添加到幽靈引用和引用隊(duì)列中,提高了測(cè)試的效率,減小了測(cè)試過(guò)程中的工作量。
[0039]步驟S203:對(duì)軟件進(jìn)行測(cè)
當(dāng)前第1頁(yè)1 2 3 4 
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
松桃| 绥化市| 彭阳县| 威海市| 上犹县| 登封市| 水城县| 德令哈市| 灵川县| 柯坪县| 沙雅县| 新绛县| 河津市| 什邡市| 桂平市| 岳阳县| 舟山市| 商丘市| 云安县| 资溪县| 陆河县| 绥中县| 上犹县| 兰州市| 达拉特旗| 南城县| 突泉县| 阿拉善左旗| 察隅县| 天台县| 台北市| 铜山县| 秦皇岛市| 南昌县| 吉首市| 定日县| 广州市| 大同市| 遵义市| 洪洞县| 马龙县|