[發明專利]一種測試過程中內存泄漏的監控方法和裝置有效
| 申請號: | 201410356321.5 | 申請日: | 2014-07-24 |
| 公開(公告)號: | CN105302714B | 公開(公告)日: | 2019-02-05 |
| 發明(設計)人: | 郭嘉杰;林釗武;高安東 | 申請(專利權)人: | 騰訊科技(深圳)有限公司 |
| 主分類號: | G06F11/36 | 分類號: | G06F11/36;G06F12/02 |
| 代理公司: | 北京德琦知識產權代理有限公司 11018 | 代理人: | 謝安昆;宋志強 |
| 地址: | 518044 廣東省深圳*** | 國省代碼: | 廣東;44 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 測試 過程 內存 泄漏 監控 方法 裝置 | ||
本發明公開了一種測試過程中內存泄漏的監控方法和裝置。該方法包括:在幽靈引用和引用隊列中添加軟件中需要判斷內存泄漏的對象;對軟件進行測試,統計需要判斷內存泄漏的對象的未被回收的次數;根據所述次數判斷所述次數對應的對象是否內存泄漏,若是,生成hprof文件。通過幽靈引用和引用隊列監控對象是否已經被回收,再根據監控的結果判斷監控的對象是否已經內存泄漏,在內存泄漏時生成hprof文件,實現了自動監控內存泄漏,記錄內存泄漏的自動定位,提高了監控正確率和效率。
技術領域
本發明涉及軟件測試領域,尤其涉及一種測試過程中內存泄漏的監控方法和裝置。
背景技術
Java跟C++語言不一樣,C++語言有明確的內存泄漏——指向一塊內存的指針被重新賦值后,而該內存又沒被回收,即由于再也無法訪問而導致內存泄漏。但Java不會出現這種情況。雖然不會出現,但由于Java的引用計數機制,也容易出現一些我們不希望出現的內存泄露,例如一個小對象由于人為失誤忘記刪除對其引用,導致該小對象所引用的所有對象都無法被回收。
由于Java語言的特性,開發人員是不需要關注對象的回收的。但由于有可能是開發人員在開發過程中,由于某些人為原因導致一些對象沒有被回收,而使得軟件所占用的越來越大,這是不希望發生的。
發明內容
本發明提出了一種測試過程中內存泄漏的監控方法和裝置,其通過幽靈引用和引用隊列監控對象是否已經被回收,再根據監控的結果判斷監控的對象是否已經內存泄漏,在內存泄漏時生成hprof文件,實現了自動監控內存泄漏,記錄內存泄漏的自動定位,提高了監控正確率和效率。
為實現上述設計,本發明采用以下技術方案:
一方面采用一種測試過程中內存泄漏的監控方法,該方法包括:
在幽靈引用和引用隊列中添加軟件中需要判斷內存泄漏的對象;
對軟件進行測試,統計需要判斷內存泄漏的對象的未被回收的次數;
根據所述次數判斷所述次數對應的對象是否內存泄漏,若是,生成hprof文件。
另一方面采用一種測試過程中內存泄漏的監控裝置,該裝置包括:
監控對象添加單元,用于在幽靈引用和引用隊列中添加軟件中需要判斷內存泄漏的對象;
次數統計單元,用于對軟件進行測試,統計需要判斷內存泄漏的對象的未被回收的次數;
內存泄漏判斷單元,用于根據所述次數判斷所述次數對應的對象是否內存泄漏,若是,生成hprof文件。
本發明的有益效果在于:通過幽靈引用和引用隊列監控對象是否已經被回收,再根據監控的結果判斷監控的對象是否已經內存泄漏,在內存泄漏時生成hprof文件,實現了自動監控內存泄漏,記錄內存泄漏的自動定位,提高了監控正確率和效率。
附圖說明
為了更清楚地說明本發明實施例中的技術方案,下面將對本發明實施例描述中所需要使用的附圖作簡單的介紹,顯而易見地,下面描述中的附圖僅僅是本發明的一些實施例,對于本領域普通技術人員來講,在不付出創造性勞動的前提下,還可以根據本發明實施例的內容和這些附圖獲得其他的附圖。
圖1是本發明實施例提供的一種測試過程中內存泄漏的監控方法的第一個實施例方法流程圖。
圖2是本發明實施例提供的一種測試過程中內存泄漏的監控方法的第二個實施例方法流程圖。
圖3是本發明實施例提供的一種測試過程中內存泄漏的監控方法的第三個實施例的方法流程圖。
圖4是本發明實施例提供的一種測試過程中內存泄漏的監控裝置的第一個實施例的結構方框圖。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于騰訊科技(深圳)有限公司,未經騰訊科技(深圳)有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201410356321.5/2.html,轉載請聲明來源鉆瓜專利網。
- 上一篇:一種變異測試方法及裝置
- 下一篇:一種C++內存泄漏的檢測方法





