[發(fā)明專利]一種進(jìn)程的內(nèi)存溢出測試方法、裝置及設(shè)備有效
| 申請?zhí)枺?/td> | 201210528416.1 | 申請日: | 2012-12-10 |
| 公開(公告)號: | CN103049376A | 公開(公告)日: | 2013-04-17 |
| 發(fā)明(設(shè)計)人: | 汪文俊;閆昊 | 申請(專利權(quán))人: | 北京小米科技有限責(zé)任公司 |
| 主分類號: | G06F11/36 | 分類號: | G06F11/36 |
| 代理公司: | 暫無信息 | 代理人: | 暫無信息 |
| 地址: | 100102 北京市朝陽區(qū)*** | 國省代碼: | 北京;11 |
| 權(quán)利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 一種 進(jìn)程 內(nèi)存 溢出 測試 方法 裝置 設(shè)備 | ||
技術(shù)領(lǐng)域
本發(fā)明涉及計算機技術(shù)領(lǐng)域,更具體地,涉及一種進(jìn)程的內(nèi)存溢出測試方法、裝置及設(shè)備。
背景技術(shù)
內(nèi)存泄露是指:用動態(tài)存儲分配函數(shù)動態(tài)開辟的空間,在使用完畢后未釋放,導(dǎo)致該內(nèi)存單元一直被占據(jù),無法被回收。存在內(nèi)存泄漏問題的程序,一般表現(xiàn)方式是:該程序運行時間越長,占用內(nèi)存越多,隨著程序運行時間越來越長,就會導(dǎo)致內(nèi)存泄露越來越嚴(yán)重,最后導(dǎo)致這個程序出現(xiàn)內(nèi)存溢出(Out?of?Memory,簡稱OOM)。如果出現(xiàn)OOM,系統(tǒng)就會強制關(guān)閉此程序的進(jìn)程。
為了防止程序存在內(nèi)存泄漏的問題,需要對程序進(jìn)行測試,以發(fā)現(xiàn)發(fā)生內(nèi)存泄露的程序以及泄露的原因,從而對該程序進(jìn)行改進(jìn)。
然而,部分具有內(nèi)存泄露缺陷的程序?qū)?yīng)的進(jìn)程在每次發(fā)生內(nèi)存泄漏時泄露的內(nèi)存比較小,因此,在有限的時間內(nèi),存在內(nèi)存泄漏問題的進(jìn)程可能不會發(fā)生OOM,這使得開發(fā)人員無法快速地測試出存在內(nèi)存泄漏問題的進(jìn)程,導(dǎo)致測試失效。
發(fā)明內(nèi)容
本發(fā)明實施例提出了一種進(jìn)程的內(nèi)存溢出測試方法、裝置及設(shè)備,能夠較快速地重現(xiàn)進(jìn)程的內(nèi)存溢出錯誤。
為了達(dá)到上述目的,本發(fā)明實施例提出一種進(jìn)程的內(nèi)存溢出測試方法,包括以下步驟:
檢測操作系統(tǒng)中各進(jìn)程的內(nèi)存使用量,將內(nèi)存使用量滿足預(yù)設(shè)條件的進(jìn)程確定為被測試進(jìn)程;
調(diào)低所述操作系統(tǒng)為進(jìn)程預(yù)設(shè)的最大可使用堆空間,使所述被測試進(jìn)程發(fā)生內(nèi)存溢出。
本實施例中,通過檢測進(jìn)程的內(nèi)存使用量確定被測試進(jìn)程,并通過調(diào)低操作系統(tǒng)為進(jìn)程預(yù)設(shè)的最大可使用堆空間來使被測試進(jìn)程發(fā)生內(nèi)存溢出,可以使存在內(nèi)存泄漏問題的進(jìn)程盡快地發(fā)生內(nèi)存溢出,從而便于開發(fā)人員對存在內(nèi)存泄漏問題的進(jìn)程進(jìn)行改進(jìn)。
作為上述技術(shù)方案的優(yōu)選,所述檢測操作系統(tǒng)中各進(jìn)程的內(nèi)存使用量,將內(nèi)存使用量滿足預(yù)設(shè)條件的進(jìn)程確定為被測試進(jìn)程,采用如下步驟:
在預(yù)設(shè)時間內(nèi)按照預(yù)設(shè)時間間隔獲取操作系統(tǒng)中各進(jìn)程的內(nèi)存使用量;
將內(nèi)存使用量呈上升趨勢且上升最快的進(jìn)程確定為被測試進(jìn)程。
作為上述技術(shù)方案的優(yōu)選,所述調(diào)低所述操作系統(tǒng)為進(jìn)程預(yù)設(shè)的最大可使用堆空間,使所述被測試進(jìn)程發(fā)生內(nèi)存溢出的步驟包括:
每隔預(yù)設(shè)時間段將所述操作系統(tǒng)為進(jìn)程預(yù)設(shè)的最大可使用堆空間調(diào)低預(yù)設(shè)值,直到所述被測試進(jìn)程發(fā)生內(nèi)存溢出。
作為上述技術(shù)方案的優(yōu)選,調(diào)低所述操作系統(tǒng)為進(jìn)程預(yù)設(shè)的最大可使用堆空間是通過設(shè)置虛擬機堆空間的值來實現(xiàn)。
作為上述技術(shù)方案的優(yōu)選,所述使所述被測試進(jìn)程發(fā)生內(nèi)存溢出之后,所述方法還包括:
獲取所述被測試進(jìn)程發(fā)生內(nèi)存溢出的出錯信息;
其中,所述出錯信息至少包括所述被測試進(jìn)程對應(yīng)的代碼中導(dǎo)致所述被測試進(jìn)程發(fā)生內(nèi)存溢出的代碼的位置。
本發(fā)明實施例還提出一種進(jìn)程的內(nèi)存溢出測試裝置,包括:
確定模塊,用于檢測操作系統(tǒng)中各進(jìn)程的內(nèi)存使用量,將內(nèi)存使用量滿足預(yù)設(shè)條件的進(jìn)程確定為被測試進(jìn)程;
處理模塊,用于調(diào)低所述操作系統(tǒng)為進(jìn)程預(yù)設(shè)的最大可使用堆空間,使所述被測試進(jìn)程發(fā)生內(nèi)存溢出。
作為上述技術(shù)方案的優(yōu)選,所述確定模塊用于:
在預(yù)設(shè)時間內(nèi)按照預(yù)設(shè)時間間隔獲取操作系統(tǒng)中各進(jìn)程的內(nèi)存使用量;
將內(nèi)存使用量呈上升趨勢且上升最快的進(jìn)程確定為被測試進(jìn)程。
作為上述技術(shù)方案的優(yōu)選,所述處理模塊用于:
每隔預(yù)設(shè)時間段將所述操作系統(tǒng)為進(jìn)程預(yù)設(shè)的最大可使用堆空間調(diào)低預(yù)設(shè)值,直到所述被測試進(jìn)程發(fā)生內(nèi)存溢出。
作為上述技術(shù)方案的優(yōu)選,所述處理模塊通過設(shè)置虛擬機堆空間的值來調(diào)低所述操作系統(tǒng)為進(jìn)程預(yù)設(shè)的最大可使用堆空間。
作為上述技術(shù)方案的優(yōu)選,所述裝置還包括獲取模塊,用于所述使所述被測試進(jìn)程發(fā)生內(nèi)存溢出之后,獲取所述被測試進(jìn)程發(fā)生內(nèi)存溢出的出錯信息,其中,所述出錯信息至少包括所述被測試進(jìn)程對應(yīng)的代碼中導(dǎo)致所述被測試進(jìn)程發(fā)生內(nèi)存溢出的代碼的位置。
本發(fā)明實施例還提出一種設(shè)備,所述設(shè)備包括:
一個或多個處理器;
存儲器;和
一個或多個模塊,所述一個或多個模塊存儲于所述存儲器中并被配置成由所述一個或多個處理器執(zhí)行,其中,所述一個或多個模塊具有如下功能:
檢測操作系統(tǒng)中各進(jìn)程的內(nèi)存使用量,將內(nèi)存使用量滿足預(yù)設(shè)條件的進(jìn)程確定為被測試進(jìn)程;
調(diào)低所述操作系統(tǒng)為進(jìn)程預(yù)設(shè)的最大可使用堆空間,使所述被測試進(jìn)程發(fā)生內(nèi)存溢出。
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于北京小米科技有限責(zé)任公司,未經(jīng)北京小米科技有限責(zé)任公司許可,擅自商用是侵權(quán)行為。如果您想購買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201210528416.1/2.html,轉(zhuǎn)載請聲明來源鉆瓜專利網(wǎng)。





