這篇文章主要介紹“如何排查服務(wù)器的內(nèi)存泄露”,在日常操作中,相信很多人在如何排查服務(wù)器的內(nèi)存泄露問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”如何排查服務(wù)器的內(nèi)存泄露”的疑惑有所幫助!接下來,請跟著小編一起來學(xué)習(xí)吧!
網(wǎng)站的建設(shè)成都創(chuàng)新互聯(lián)專注網(wǎng)站定制,經(jīng)驗豐富,不做模板,主營網(wǎng)站定制開發(fā).小程序定制開發(fā),H5頁面制作!給你煥然一新的設(shè)計體驗!已為成都崗?fù)?/a>等企業(yè)提供專業(yè)服務(wù)。
jps -l
查看虛擬機屬于哪個進程
jstat -gcutil 20954 1000
新生代Eden區(qū)(E,表示Eden)使用了28.30%(最后)的空間,
兩個Survivor區(qū)(S0、S1,表示Survivor0、Survivor1)分別是0和8.93%,
老年代(O,表示Old)使用了87.33%。
程序運行以來共發(fā)生Minor GC(YGC,表示Young GC)101次,總耗時1.961秒,
發(fā)生Full GC(FGC,表示Full GC)7次,F(xiàn)ull GC總耗時3.022秒,
總的耗時(GCT,表示GC Time)為4.983秒。
每1000毫秒查詢一次,一直查。
gcutil的意思是已使用空間站總空間的百分比。
查詢結(jié)果表明:這臺服務(wù)器的
jmap -histo:live 20954
可以看出HashTable中的元素有5000多萬,占用內(nèi)存大約1.5G的樣子。這肯定不正常。
live 是可選參數(shù),代表存活的對象
紅線部分:
Shortest Paths To the Accumulation Point表示GC root到內(nèi)存消耗聚集點的最短路徑
All Accumulated Objects by Class列舉了該對象所存儲的所有內(nèi)容
為了找到內(nèi)存泄露,我獲取了兩個堆轉(zhuǎn)儲文件,兩個文件獲取時間間隔是一天
對比兩個文件的對象,通過對比后的結(jié)果可以很方便定位內(nèi)存泄露。
MAT同時打開兩個堆轉(zhuǎn)儲文件,分別打開Histogram
在下圖中方框1按鈕用于對比兩個Histogram,對比后在方框2處選擇Group By package,然后對比各對象的變化
-64的意思是,倆文件中該對象比對,前者比后者少了64個
我內(nèi)存泄露位置是一個list,這個list只在這里一直不停的往里添加eventInfo對象,卻沒有釋放過。
從中找你熟悉的代碼
同時也會從首頁跳轉(zhuǎn)到Leak Suspects頁面
jmap -dump:format=b,file=
MemoryAnalyzer.ini文件
Xmx參數(shù),該參數(shù)表示最大內(nèi)存占用量,默認(rèn)為1024m
jmap比較籠統(tǒng),明顯的問題能檢查出來
從jmap獲取 .hprof 文件
選擇Leak Suspects Report, Finish就可以進入MAT分析頁面的首頁
在首頁上比較有用的是Histogram和Leak Suspects
點擊Leak Suspects會在堆轉(zhuǎn)儲文件同目錄內(nèi)生成一個Leak Suspects.zip文件,
解壓該文件后可以通過瀏覽器打開分析結(jié)果
Leak Suspects頁面
點擊Details進入詳情頁面
到此,關(guān)于“如何排查服務(wù)器的內(nèi)存泄露”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識,請繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>
文章名稱:如何排查服務(wù)器的內(nèi)存泄露
本文網(wǎng)址:http://weahome.cn/article/igpidh.html