[發(fā)明專利]一種Java內(nèi)存泄漏分析方法及裝置有效
| 申請(qǐng)?zhí)枺?/td> | 201811188866.4 | 申請(qǐng)日: | 2018-10-12 |
| 公開(公告)號(hào): | CN109408383B | 公開(公告)日: | 2023-04-14 |
| 發(fā)明(設(shè)計(jì))人: | 易存道 | 申請(qǐng)(專利權(quán))人: | 北京寶蘭德軟件股份有限公司 |
| 主分類號(hào): | G06F11/36 | 分類號(hào): | G06F11/36 |
| 代理公司: | 北京路浩知識(shí)產(chǎn)權(quán)代理有限公司 11002 | 代理人: | 王瑩;李相雨 |
| 地址: | 100020 北京市朝*** | 國(guó)省代碼: | 北京;11 |
| 權(quán)利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 一種 java 內(nèi)存 泄漏 分析 方法 裝置 | ||
1.一種Java內(nèi)存泄漏分析方法,其特征在于,包括:
將快照信息分為對(duì)象快照和集合對(duì)象快照兩類,其中,所述集合對(duì)象快照只關(guān)注集合并且可收集集合寫操作的調(diào)用棧,所述對(duì)象快照關(guān)注所有對(duì)象,但不會(huì)收集對(duì)象調(diào)用棧;
按照預(yù)設(shè)集合對(duì)象快照采集規(guī)則,采集集合對(duì)象快照;
按照預(yù)設(shè)對(duì)象快照采集規(guī)則,采集對(duì)象快照;
根據(jù)所采集的對(duì)象快照和集合對(duì)象快照進(jìn)行對(duì)比分析,獲得Java內(nèi)存泄漏分析結(jié)果;其中,通過集合對(duì)象快照對(duì)比分析出有可能泄露的集合,通過收集調(diào)用棧定位到代碼位置;在集合對(duì)象快照無法確定問題的情況下,通過對(duì)象快照來分析出一組一段時(shí)間內(nèi)增長(zhǎng)最明顯的對(duì)象。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述根據(jù)所采集的對(duì)象快照和集合對(duì)象快照進(jìn)行對(duì)比分析,獲得Java內(nèi)存泄漏分析結(jié),包括:
根據(jù)所采集的對(duì)象快照和集合對(duì)象快照,在線或離線進(jìn)行對(duì)比分析,獲得Java內(nèi)存泄漏分析結(jié)果;
和/或,
所述采集集合對(duì)象快照和采集對(duì)象快照的動(dòng)作是在檢測(cè)到用戶的觸發(fā)指令時(shí)采集或者是按照預(yù)設(shè)時(shí)間定時(shí)采集。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述按照預(yù)設(shè)集合對(duì)象快照采集規(guī)則,采集集合對(duì)象快照,包括:
預(yù)先定義一個(gè)弱引用集合存放需要關(guān)注的集合對(duì)象的弱引用,每隔預(yù)設(shè)時(shí)間段采集需要關(guān)注的集合信息上報(bào)數(shù)據(jù)庫(kù),形成一次集合對(duì)象快照;其中:
未開啟內(nèi)存快照功能不采集;
集合內(nèi)元素個(gè)數(shù)未達(dá)到預(yù)設(shè)第一閾值不采集;
對(duì)象生存時(shí)間未達(dá)到預(yù)設(shè)第二閾值不采集;
如果采集的對(duì)象在上報(bào)前被回收了,所述弱引用集合自動(dòng)清理掉該對(duì)象;
上報(bào)前判斷集合的當(dāng)前狀態(tài),如果當(dāng)前集合內(nèi)元素個(gè)數(shù)減少到所述預(yù)設(shè)第一閾值以下,清除對(duì)當(dāng)前集合的引用,不上報(bào)當(dāng)前集合的信息。
4.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述集合對(duì)象快照的采集利用了字節(jié)碼注入技術(shù),對(duì)所有實(shí)現(xiàn)了java.util.Collection和java.util.Map的類進(jìn)行注入改造,所有對(duì)集合的寫操作都先執(zhí)行是否采集的判斷。
5.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述按照預(yù)設(shè)對(duì)象快照采集規(guī)則,采集對(duì)象快照,包括:
每隔預(yù)設(shè)時(shí)間段采集一次對(duì)象數(shù)據(jù),將數(shù)量到達(dá)預(yù)設(shè)第三閾值的類信息上報(bào)數(shù)據(jù)庫(kù),形成一次對(duì)象快照;其中:
未開啟內(nèi)存快照功能不采集。
6.根據(jù)權(quán)利要求5所述的方法,其特征在于,所述對(duì)象快照的采集利用了java自身的jmap-histo:live功能,采集當(dāng)前內(nèi)存中垃圾回收GC后的活動(dòng)對(duì)象,按照類型記錄每個(gè)類的對(duì)象數(shù)目。
7.根據(jù)權(quán)利要求1所述的方法,其特征在于,在根據(jù)所采集的對(duì)象快照和集合對(duì)象快照進(jìn)行對(duì)比分析,獲得Java內(nèi)存泄漏分析結(jié)果之后,所述方法還包括:
獲取用戶選取的指定時(shí)間段,讀取指定時(shí)間段內(nèi)的對(duì)象快照和集合對(duì)象快照的信息,計(jì)算增長(zhǎng)最明顯的預(yù)設(shè)數(shù)量個(gè)對(duì)象或集合對(duì)象將其數(shù)次快照信息生成折線趨勢(shì)圖展示給用戶。
8.一種Java內(nèi)存泄漏分析裝置,其特征在于,包括:
分類模塊,用于將快照信息分為對(duì)象快照和集合對(duì)象快照兩類,其中,所述集合對(duì)象快照只關(guān)注集合并且可收集集合寫操作的調(diào)用棧,所述對(duì)象快照關(guān)注所有對(duì)象,但不會(huì)收集對(duì)象調(diào)用棧;
第一采集模塊,用于按照預(yù)設(shè)集合對(duì)象快照采集規(guī)則,采集集合對(duì)象快照;
第二采集模塊,用于按照預(yù)設(shè)對(duì)象快照采集規(guī)則,采集對(duì)象快照;
分析模塊,用于根據(jù)所采集的對(duì)象快照和集合對(duì)象快照進(jìn)行對(duì)比分析,獲得Java內(nèi)存泄漏分析結(jié)果;其中,通過集合對(duì)象快照對(duì)比分析出有可能泄露的集合,通過收集調(diào)用棧定位到代碼位置;在集合對(duì)象快照無法確定問題的情況下,通過對(duì)象快照來分析出一組一段時(shí)間內(nèi)增長(zhǎng)最明顯的對(duì)象。
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于北京寶蘭德軟件股份有限公司,未經(jīng)北京寶蘭德軟件股份有限公司許可,擅自商用是侵權(quán)行為。如果您想購(gòu)買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請(qǐng)聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201811188866.4/1.html,轉(zhuǎn)載請(qǐng)聲明來源鉆瓜專利網(wǎng)。
- 同類專利
- 專利分類
G06F 電數(shù)字?jǐn)?shù)據(jù)處理
G06F11-00 錯(cuò)誤檢測(cè);錯(cuò)誤校正;監(jiān)控
G06F11-07 .響應(yīng)錯(cuò)誤的產(chǎn)生,例如,容錯(cuò)
G06F11-22 .在準(zhǔn)備運(yùn)算或者在空閑時(shí)間期間內(nèi),通過測(cè)試作故障硬件的檢測(cè)或定位
G06F11-28 .借助于檢驗(yàn)標(biāo)準(zhǔn)程序或通過處理作錯(cuò)誤檢測(cè)、錯(cuò)誤校正或監(jiān)控
G06F11-30 .監(jiān)控
G06F11-36 .通過軟件的測(cè)試或調(diào)試防止錯(cuò)誤
- 基于支持類的標(biāo)識(shí)來下載Java應(yīng)用的方法、系統(tǒng)和計(jì)算機(jī)程序產(chǎn)品
- 啟動(dòng)JAVA應(yīng)用的方法及裝置
- Java虛擬機(jī)的管理方法、監(jiān)控系統(tǒng)和監(jiān)控代理模塊
- 一種運(yùn)行Java程序的方法和裝置
- 一種保護(hù)java程序的方法
- Java卡的Java代碼補(bǔ)丁方法
- 一種基于中間件架構(gòu)下java棧的多線程實(shí)現(xiàn)方法
- 一種支持JAVA卡補(bǔ)丁函數(shù)的智能卡
- 一種改進(jìn)的Java卡初始化方法和Java卡
- JavaEE平臺(tái)構(gòu)建方法、JavaEE平臺(tái)及云端系統(tǒng)





