專利名稱:一種內(nèi)存泄露的定位方法及裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及軟件檢測領(lǐng)域,尤其涉及一種內(nèi)存泄露的定位方法及裝置。
背景技術(shù):
在計算機(jī)科學(xué)中,內(nèi)存泄漏是指由于疏忽或錯誤造成程序未能釋放已經(jīng)不再使用 的內(nèi)存的情況。內(nèi)存泄漏會因為減少可用內(nèi)存的數(shù)量從而降低計算機(jī)的性能,在最糟糕的 情況下,過多的可用內(nèi)存被分配掉會導(dǎo)致全部或部分設(shè)備停止正常工作,或者應(yīng)用程序崩 潰。VLD(Visual Leak Detector,Visual 檢漏儀)是一款用于 Visual C++的免費內(nèi) 存泄露檢測工具,VLD通過對程序本身的內(nèi)存申請函數(shù)進(jìn)行監(jiān)測,并判斷所述內(nèi)存申請函數(shù) 對應(yīng)的內(nèi)存是否有釋放,來檢測是否存在內(nèi)存泄露,并定位到所在代碼行。但是,由于VLD是基于對內(nèi)存申請函數(shù)的監(jiān)測來實現(xiàn)內(nèi)存檢漏與定位,所以當(dāng)內(nèi) 存泄露是由于非代碼引起的或者其他一些非常規(guī)情況引起的情況下,VLD并不能夠很好的 完成內(nèi)存泄露的檢測與定位。
發(fā)明內(nèi)容
本發(fā)明所要解決的問題在于,提供一種內(nèi)存泄露的檢測方法及裝置,根據(jù)被測程 序運行前后所消耗的內(nèi)存值的記錄、計算與判斷,判定被測程序是否出現(xiàn)內(nèi)存泄露,并在出 現(xiàn)內(nèi)存泄露時,定位該被測程序。為了解決上述問題,本發(fā)明實施例提供了一種內(nèi)存泄露的定位方法,包括記錄被測程序運行前的初始內(nèi)存值,以及所述被測程序運行退出后的剩余內(nèi)存 值;根據(jù)所述初始內(nèi)存值和所述剩余內(nèi)存值,計算所述被測程序運行過程中所消耗的 消耗內(nèi)存值;根據(jù)所述消耗內(nèi)存值,判定所述被測程序是否存在內(nèi)存泄露,當(dāng)判定結(jié)果為是時, 定位所述被測程序。相應(yīng)的,本發(fā)明實施例提供了一種內(nèi)存泄露的定位裝置,包括記錄單元,用于記錄被測程序運行前的初始內(nèi)存值,以及所述被測程序運行退出 后的剩余內(nèi)存值;計算單元,用于根據(jù)所述記錄單元記錄的初始內(nèi)存值和所述剩余內(nèi)存值,計算所 述被測程序運行過程中所消耗的消耗內(nèi)存值;判定單元,用于根據(jù)所述計算單元計算得到的消耗內(nèi)存值,判定所述被測程序是 否存在內(nèi)存泄露;定位單元,用于當(dāng)所述判定單元判定所述被測程序存在內(nèi)存泄露時,定位所述被 測程序。本發(fā)明通過對程序運行過程中的內(nèi)存的變化情況,來判定所述程序是否存在內(nèi)存泄露,以在存在內(nèi)存泄露時定位該程序,方便用戶了解到存在內(nèi)存泄露的位置。本發(fā)明實施 例是基于對內(nèi)存變化情況的記錄、計算以及判定來檢測內(nèi)存泄露并定位,并非基于所述程 序本身進(jìn)行內(nèi)存泄露的檢測與定位,從而不僅能夠?qū)崿F(xiàn)由程序代碼本身引起的內(nèi)存泄露的 檢測與定位,而且實現(xiàn)了當(dāng)內(nèi)存泄露是由于非程序代碼引起的或者其他一些非常規(guī)情況引 起的情況下,仍然能夠很好的完成內(nèi)存泄露的檢測與定位。
圖1是本發(fā)明實施例的內(nèi)存泄露的定位裝置的結(jié)構(gòu)組成示意圖;圖2是本發(fā)明內(nèi)存泄露的定位方法的第一實施例流程示意圖;圖3是本發(fā)明內(nèi)存泄露的定位方法的第二實施例流程示意圖。
具體實施例方式下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進(jìn)行清楚、完 整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例?;?本發(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他 實施例,都屬于本發(fā)明保護(hù)的范圍。圖1是本發(fā)明實施例的內(nèi)存泄露的定位裝置的結(jié)構(gòu)組成示意圖,如圖1所示,該裝 置包括記錄單元1,用于記錄被測程序運行前的初始內(nèi)存值,以及所述被測程序運行退出 后的剩余內(nèi)存值。在運行被測程序前,可根據(jù)需要對測試環(huán)境進(jìn)行檢測即對移動終端系統(tǒng) 進(jìn)行檢測,當(dāng)確定測試環(huán)境無內(nèi)存泄露時,即可運行所述被測程序,以檢測所述被測程序是 否引起內(nèi)存泄露。所述記錄單元1在運行所述被測程序之前,記錄終端的內(nèi)存的初始內(nèi)存 值,并當(dāng)所述被測程序運行退出后,記錄終端內(nèi)存此時的剩余內(nèi)存值。所述記錄單元1可根 據(jù)需要,記錄所述被測程序每一次運行前的初始內(nèi)存值以及相應(yīng)的每一次所述被測程序運 行退出后的剩余內(nèi)存值。例如,當(dāng)用戶運行所述被測程序n次時,所述記錄單元1相應(yīng)的記 錄第一次運行前的初始內(nèi)存值dwBeginl,第一次運行退出后的剩余內(nèi)存值dwEndl ;第二 次運行前的初始內(nèi)存值dWBegin2,第二次運行退出后的剩余內(nèi)存值dwEnd2,直到第n次的 初始內(nèi)存值dwBeginn和剩余內(nèi)存值dwEndn,此時,n值越大越好。計算單元2,用于根據(jù)所述記錄單元1記錄的初始內(nèi)存值和所述剩余內(nèi)存值,計 算所述被測程序運行過程中所消耗的消耗內(nèi)存值。所述計算單元2可將所述記錄單元1 記錄的初始內(nèi)存值以及剩余內(nèi)存值進(jìn)行減法運算,得到所述消耗內(nèi)存值,例如當(dāng)記錄的 初始內(nèi)存值為128M,剩余內(nèi)存值為120M,則可以計算得到消耗內(nèi)存值為8M。另外,當(dāng)所 述記錄單元1記錄的相應(yīng)內(nèi)存值包括多個時,如當(dāng)記錄的相應(yīng)的內(nèi)存值包括dwBeginl、
dwEndl, dwBegin2> dwEnd2> ......、 dwBeginn> dwEndn Ijf^if2 )(寸—flj禾呈
次運行過程中的消耗內(nèi)存值的計算方式為AdwMeml = dwBeginl-dwEndl, A dwMem2 =
dwBegin2-dwEnd2, ......, A dwMemn = dwBeginn-dwEndn,同時,還可以根據(jù)所述 dwBeginl
和dwEndn,計算得到總的消耗內(nèi)存值A(chǔ) dwMemTotal = dwBeginl-dwEndn。判定單元3,用于根據(jù)所述計算單元2計算得到的消耗內(nèi)存值,判定所述被測程序 是否存在內(nèi)存泄露。其中,可當(dāng)所述消耗內(nèi)存值不為零時,判定所述被測程序存在內(nèi)存泄
4露,如上述的當(dāng)所述計算單元2計算得到的消耗內(nèi)存值為8M時,則說明所述被測程序運行 后有8M內(nèi)存未被釋放,存在內(nèi)存泄露;若所述消耗的內(nèi)存值為零時,則說明所述被測程序 運行后,內(nèi)存均相應(yīng)的釋放,不存在內(nèi)存泄露的問題。在實際情況中,由于誤差的存在可能會影響所述判定單元3的判斷,導(dǎo)致誤判的 發(fā)生,可通過多次運行被測程序的方式進(jìn)行相應(yīng)的內(nèi)存泄露的判定來避免誤判的發(fā)生。運 行多次被測程序,所述記錄單元1和所述計算單元2進(jìn)行多次運行過程中相應(yīng)的內(nèi)存值的 記錄與計算,得到相應(yīng)的每一次運行消耗內(nèi)存值和/或多次運行后總的消耗內(nèi)存值(所述 每一次運行消耗內(nèi)存值和/或多次運行后總的消耗內(nèi)存值的獲取如上述),分析所述每一 次運行消耗內(nèi)存值和/或總的消耗內(nèi)存值,若得到的多次運行后的每一次消耗內(nèi)存值全部 或者大部分均 不為零時,或者多次運行后的總的消耗內(nèi)存值不為零且隨著運行次數(shù)的增加 而加大,或者每一次運行消耗內(nèi)存值全部或者大部分均不為零且所述總的消耗內(nèi)存值不為 零且隨著運行次數(shù)的增加而不斷加大,則所述判定單元3可判定存在內(nèi)存泄露;否則,不存 在內(nèi)存泄露。定位單元4,用于當(dāng)所述判定單元3判定所述被測程序存在內(nèi)存泄露時,定位所述 被測程序。一旦判定被測程序出現(xiàn)內(nèi)存泄露,則定位該被測測序,以使用戶了解到是那段程 序存在內(nèi)存泄露。進(jìn)一步的,如圖1所示,該裝置還包括顯示單元4,用于顯示程序運行時的內(nèi)存使用信息,并發(fā)出多次運行所述程序的提 示。在所述被測程序運行過程中,可通過所述顯示單元4實時顯示程序運行時的內(nèi)存使用 信息,如每一次被測程序運行前的初始內(nèi)存值以及運行后的剩余內(nèi)存值,以及消耗內(nèi)存值 等,并顯示需重復(fù)多次運行所述被測程序等提示以提示用戶需對被測程序反復(fù)運行以避免 誤判。所述被測程序可以是主程序、主程序中的功能程序、功能程序中的類程序中的任 意一種或多種,通過運行相應(yīng)的被測程序并采用所述內(nèi)存泄露的定位裝置進(jìn)行相應(yīng)的記 錄,計算,判定和定位,可以使得用戶清楚的知道導(dǎo)致內(nèi)存泄露的是那個主程序,或者是主 程序中的某段功能程序,或者主程序某段功能程序中的某個類程序,用戶可進(jìn)行相應(yīng)的修 改等處理,避免內(nèi)存泄露的發(fā)生。用戶可采用所述內(nèi)存泄露的定位裝置依次檢測程序運行時的內(nèi)存情況,若所述主 程序出現(xiàn)內(nèi)存泄露,則定位所述主程序;定位所述主程序后,檢測所述主程序中的各功能程 序運行時的內(nèi)存情況,若一個或者多個功能程序出現(xiàn)內(nèi)存泄露時,則定位相應(yīng)的存在內(nèi)存 泄露的功能程序;定位到功能程序后,檢測每一個被定位的所述功能程序中的各個類程序 運行時的內(nèi)存情況,若一個或者多個類程序出現(xiàn)內(nèi)存泄露時,則可定位到相應(yīng)的存在內(nèi)存 泄露的類程序。用戶只需對定位到的相應(yīng)的類程序進(jìn)行修改等處理即可避免內(nèi)存泄露的產(chǎn) 生,而不需要對整個程序進(jìn)行檢查修改。通過上述實施例的描述,本發(fā)明實施例具有以下優(yōu)點通過檢測程序運行過程中 的內(nèi)存的變化情況,來判定所述程序是否存在內(nèi)存泄露,以在存在內(nèi)存泄露時定位該程序, 方便用戶了解到存在內(nèi)存泄露的位置。本發(fā)明實施例是基于對內(nèi)存值的變化情況進(jìn)行內(nèi)存 泄露的檢測并定位,并非基于所述程序本身進(jìn)行內(nèi)存泄露的檢測與定位,從而不僅能夠?qū)?現(xiàn)由程序代碼本身引起的內(nèi)存泄露的檢測與定位,而且實現(xiàn)了當(dāng)內(nèi)存泄露是由于非程序代碼引起的或者其他一些非常規(guī)情況引起的情況下,仍然能夠很好的完成內(nèi)存泄露的檢測與 定位。圖2是本發(fā)明內(nèi)存泄露的定位方法的第一實施例流程示意圖,如圖2所示,該方法 包括S201 記錄被測程序運行前的初始內(nèi)存值,以及所述被測程序運行退出后的剩余 內(nèi)存值。在被測程序運行以及進(jìn)行相應(yīng)內(nèi)存記錄前,可進(jìn)行測試環(huán)境(即移動終端系統(tǒng))有 無內(nèi)存泄露的檢測,當(dāng)確定測試環(huán)境無內(nèi)存泄露時,進(jìn)行被測程序的運行以及相應(yīng)內(nèi)存的 記錄。具體的,可記錄所述被測程序每一次運行前的初始內(nèi)存值以及相應(yīng)的每一次所述被 測程序運行退出后的剩余內(nèi)存值。例如,當(dāng)用戶運行所述被測程序n次時,相應(yīng)的記錄為 第一次運行前的初始內(nèi)存值dwBeginl,第一次運行退出后的剩余內(nèi)存值dwEndl ;第二次運 行前的初始內(nèi)存值dWBegin2,第二次運行退出后的剩余內(nèi)存值dwEnd2、……、第n次運行 前的初始內(nèi)存值dwBeginn,第n次運行退出后的剩余內(nèi)存值dwEndn。S202 根據(jù)所述初始內(nèi)存值和所述剩余內(nèi)存值,計算所述被測程序運行過程中所 消耗的消耗內(nèi)存值。通過將步驟S201中記錄的初始內(nèi)存值與剩余內(nèi)存值進(jìn)行減法運算, 得到所述消耗內(nèi)存值,例如由步驟S201所列的例子得到第一消耗內(nèi)存值的計算方式為 A dwMeml = dwBeginl-dwEndl,第二消耗內(nèi)存值為 A dwMem2 = dwBegin2_dwEnd2,依次類 推;或者計算運行過程中總的消耗內(nèi)存值A(chǔ)dwMemTotal = dwBeginl-dwEndn。具體的,也 可同時采用上述兩種計算方式分別計算出相應(yīng)的消耗內(nèi)存值。S203 根據(jù)所述消耗內(nèi)存值,判定所述被測程序是否存在內(nèi)存泄露,當(dāng)判定結(jié)果為 是時,定位所述被測程序。具體的,如步驟S202中采用第一種方式計算得到的消耗內(nèi)存值 全部或者大部分不為零和/或采用第二種方式計算得到的總的消耗內(nèi)存值不為零且隨著n 值的增加而增大,可判定出現(xiàn)內(nèi)存泄露,定位該被測程序,該被測程序即是引起內(nèi)存泄露的 位置。所述被測程序可包括主程序,主程序中的各功能程序,功能程序中的各個類程序 等。采用上述3個步驟,可分別檢測主程序,或者主程序中的各功能程序,或者功能程序中 的各個類程序是否出現(xiàn)內(nèi)存泄露,并判定出現(xiàn)內(nèi)存泄露時,定位該出現(xiàn)內(nèi)存泄露的程序。也 可按先后順序?qū)χ鞒绦?、所述主程序中的各功能程序、所述功能程序中的各個類程序進(jìn)行 內(nèi)存泄露的檢測與定位,以定位到某個主程序中出現(xiàn)內(nèi)存泄露的類程序,以方便用戶修改 相應(yīng)的類程序以避免內(nèi)存泄露的發(fā)生,而不必對整個程序進(jìn)行檢查修改。采用本發(fā)明方法第一實施例,通過對程序運行過程中內(nèi)存值的記錄與計算,不僅 實現(xiàn)了由代碼本身引起的內(nèi)存泄露的檢測與定位,而且實現(xiàn)了當(dāng)內(nèi)存泄露是由于非代碼 引起的或者其他一些非常規(guī)情況引起的情況下,仍然能夠很好的完成內(nèi)存泄露的檢測與定 位。下面以檢測判定某一主函數(shù)是否存在內(nèi)存泄露,并且定位到所述主程序中存在內(nèi) 存泄露的類程序為例,對本發(fā)明的內(nèi)存泄露的定位方法進(jìn)行說明。圖3是本發(fā)明內(nèi)存泄露的定位方法的第二實施例流程示意圖,如圖3所示,該方法 包括S301 記錄主程序運行前的初始內(nèi)存值,以及所述主程序運行退出后的剩余內(nèi)存 值,并根據(jù)所述初始內(nèi)存值和所述剩余內(nèi)存值計算所述主程序運行過程中消耗的消耗內(nèi)存值。運行至少兩次所述主程序,且運行的次數(shù)越多,可使得后續(xù)的對內(nèi)存泄露的判定越準(zhǔn)確。記錄每次運行所述主程序前的初始內(nèi)存值為dwBeginl、dwBegin2、……、dwBeginn,相 應(yīng)的記錄每次所述主程序運行退出后的剩余內(nèi)存值為dwEndl、dwEnd2,……、dwEndn,將 所述初始內(nèi)存值與相應(yīng)的所述剩余內(nèi)存值進(jìn)行減法運算,即可得到相應(yīng)的每次運行所述主
禾呈 白勺fflH內(nèi) Δ dwMeml = dwBeginl-dwEndU Δ dwMem2 = dwBegin2-dwEnd2> ......、
AdwMemn = dwBeginn-dwEndn ;也可以將所述主程序第一次運行前的初始內(nèi)存值dwBeginl 與運行η次所述主程序退出后的剩余內(nèi)存值dwEndn作減法運算,AdwMemTotal = dwBeginl-dwEndn的方式得到運行過程中總的消耗內(nèi)存值A(chǔ)dwMemTotal。S302:根據(jù)所述消耗內(nèi)存值,判斷主程序是否存在內(nèi)存泄露??赏ㄟ^判斷計 算得到的所述消耗內(nèi)存值是否為零來判定所述主程序是否存在泄漏,為零時,判定不存 在內(nèi)存泄露,不為零時,則判定存在內(nèi)存泄露。具體的,如上述例子所述,當(dāng)AdwMeml、
AdwMem2、......、Δ dwMemn全部或者大部分不為零時,和/或當(dāng)Δ dwMemTotal不為零,并
且隨著η值的增大相應(yīng)加大時,即可判定所述主程序存在內(nèi)存泄露。當(dāng)判定該主程序存在 內(nèi)存泄露時,執(zhí)行步驟S303,若該主程序不存在內(nèi)存泄露,則結(jié)束退出。S303:當(dāng)判定所述主程序存在內(nèi)存泄露時,分別記錄定位的所述主程序中的各功 能程序運行前的初始內(nèi)存值,以及所述各功能程序運行退出后的剩余內(nèi)存值,根據(jù)所述初 始內(nèi)存值和所述剩余內(nèi)存值,分別計算所述各功能程序運行過程中所消耗的消耗內(nèi)存值。 當(dāng)判定所述主程序存在內(nèi)存泄露時,分別運行所述主程序中的各功能程序,并對每一個功 能程序運行過程中的相應(yīng)內(nèi)存進(jìn)行記錄與計算,其中,所述記錄與計算與步驟S301中的主 程序的相應(yīng)內(nèi)存值的記錄與計算過程相同,在此不贅述。S304 根據(jù)所述消耗內(nèi)存值,判斷功能程序是否存在內(nèi)存泄露??赏ㄟ^判斷計算 得到的所述消耗內(nèi)存值是否為零來判定所述主程序中的各個功能程序是否存在泄漏,為零 時,判定不存在內(nèi)存泄露,不為零時,則判定存在內(nèi)存泄露。具體的,可能判定存在多個功能 程序存在內(nèi)存泄露的情況,可分別定位到每一個存在內(nèi)存泄露的功能程序。具體的,功能程 序是否存在內(nèi)存泄露判定方式與步驟S302的方式相同,在此不贅述。S305:當(dāng)判定所述功能程序存在內(nèi)存泄露時,分別記錄定位的所述功能程序中的 各個類程序運行前的初始內(nèi)存值,以及所述各個類程序運行退出后的剩余內(nèi)存值,根據(jù)所 述初始內(nèi)存值和所述剩余內(nèi)存值,分別計算所述各個類程序運行過程中所消耗的消耗內(nèi)存 值。當(dāng)判定功能程序存在內(nèi)存泄露時,分別運行各個存在內(nèi)存泄露的功能程序中的各個類 程序,并做相應(yīng)的內(nèi)存記錄與計算,其中,所述記錄與計算與步驟S301中的主程序的相應(yīng) 內(nèi)存值的記錄與計算過程相同,在此不贅述。此時,對其他不存在內(nèi)存泄露的功能程序不需 作任何處理。S306:根據(jù)所述消耗內(nèi)存值,判斷類程序是否存在內(nèi)存泄露??赏ㄟ^判斷計算得到 的所述消耗內(nèi)存值是否為零來判定相應(yīng)的類程序是否存在泄漏,為零時,判定不存在內(nèi)存 泄露,不為零時,則判定存在內(nèi)存泄露。具體的,類程序是否存在內(nèi)存泄露判定方式與步驟 S302的方式相同,在此不贅述。S307 定位所述類程序。定位到存在內(nèi)存泄露的所述類程序后,便于用戶對存在內(nèi) 存泄露的類程序的修改,以消除所述主程序存在內(nèi)存泄露的情況。本發(fā)明方法第二實施例,通過依次運行主程序,主程序中的功能程序,功能程序中的類程序,并記錄各個運行過程中內(nèi)存值的變化情況,來判定相應(yīng)的主程序、主程序中的功 能程序、功能程序中的類程序是否存在內(nèi)存泄漏,以定位到所述主程序中存在內(nèi)存泄露的 類程序,并不需要基于所述程序本身進(jìn)行內(nèi)存泄露的判定與定位,從而不僅實現(xiàn)了由代碼 本身引起的內(nèi)存泄露的判定與定位,而且實現(xiàn)了當(dāng)內(nèi)存泄露是由于非代碼引起的或者其他 一些非常規(guī)情況引起的情況下,仍然能夠很好的完成內(nèi)存泄露的檢測與定位。
以上所揭露的僅為本發(fā)明的較佳實施例而已,當(dāng)然不能以此來限定本發(fā)明之權(quán)利 范圍,因此依本發(fā)明權(quán)利要求所作的等同變化,仍屬于發(fā)明所涵蓋的范圍。
權(quán)利要求
一種內(nèi)存泄露的定位方法,其特征在于,包括記錄被測程序運行前的初始內(nèi)存值,以及所述被測程序運行退出后的剩余內(nèi)存值;根據(jù)所述初始內(nèi)存值和所述剩余內(nèi)存值,計算所述被測程序運行過程中所消耗的消耗內(nèi)存值;根據(jù)所述消耗內(nèi)存值,判定所述被測程序是否存在內(nèi)存泄露,當(dāng)判定結(jié)果為是時,定位所述被測程序。
2.如權(quán)利要求1所述的方法,其特征在于,所述根據(jù)所述初始內(nèi)存值和所述剩余內(nèi)存 值,計算所述被測程序運行過程中所消耗的消耗內(nèi)存值的步驟之后,還包括顯示所述被測程序運行時的內(nèi)存使用信息,并提示是否需要多次運行所述被測程序。
3.如權(quán)利要求1或2所述的方法,其特征在于,所述被測程序包括主程序、主程序中的 功能程序、功能程序中的類程序。
4.一種內(nèi)存泄露的定位裝置,其特征在于,包括記錄單元,用于記錄被測程序運行前的初始內(nèi)存值,以及所述被測程序運行退出后的 剩余內(nèi)存值;計算單元,用于根據(jù)所述記錄單元記錄的初始內(nèi)存值和所述剩余內(nèi)存值,計算所述被 測程序運行過程中所消耗的消耗內(nèi)存值;判定單元,用于根據(jù)所述計算單元計算得到的消耗內(nèi)存值,判定所述被測程序是否存 在內(nèi)存泄露;定位單元,用于當(dāng)所述判定單元判定所述被測程序存在內(nèi)存泄露時,定位所述被測程序。
5.如權(quán)利要求4所述的裝置,其特征在于,還包括顯示單元,用于顯示所述被測程序運行時的內(nèi)存使用信息,并顯示是否需要多次運行 所述被測程序的提示。
6.如權(quán)利要求4或5所述的方法,其特征在于,所述被測程序包括主程序、主程序中的 功能程序、功能程序中的類程序。
全文摘要
本發(fā)明提供了一種內(nèi)存泄露的定位方法,包括記錄被測程序運行前的初始內(nèi)存值,以及所述被測程序運行退出后的剩余內(nèi)存值;根據(jù)所述初始內(nèi)存值和所述剩余內(nèi)存值,計算所述被測程序運行過程中所消耗的消耗內(nèi)存值;根據(jù)所述消耗內(nèi)存值,判定所述被測程序是否存在內(nèi)存泄露,當(dāng)判定結(jié)果為是時,定位所述被測程序。相應(yīng)的,本發(fā)明提供了一種內(nèi)存泄露的定位裝置,采用本發(fā)明,不僅能夠?qū)崿F(xiàn)由代碼本身引起的內(nèi)存泄露進(jìn)行判定和定位,而且當(dāng)內(nèi)存泄露是由于非代碼引起的或者其他一些非常規(guī)情況引起的情況下,仍然能夠很好的完成內(nèi)存泄露的檢測與定位。
文檔編號G06F11/22GK101819549SQ201010150939
公開日2010年9月1日 申請日期2010年4月13日 優(yōu)先權(quán)日2010年4月13日
發(fā)明者劉偉 申請人:東莞宇龍通信科技有限公司