Java程序內存分析:JMap與Eclipse Memory Analyzer - COD...
Java程序內存分析:JMap與Eclipse Memory Analyzer當程序中內存使用過(guò)多,或者存在內存泄露時(shí),經(jīng)常會(huì )報OutOfMemory錯誤。很多時(shí)候,尤其是在生產(chǎn)環(huán)境中,不得不馬上重啟服務(wù),導致現場(chǎng)丟失,無(wú)法查找問(wèn)題所在。
其實(shí)jdk中自帶了很多分析監控工具,jmap就是其中之一。
當程序出現問(wèn)題,先不要停止服務(wù),先用ps看一下java的pid, 然后運行命令將內存導出來(lái):
[Copy to clipboard]View Code BASH
/usr/local/jdk1.6.0_20/bin/jmap -dump:format=b,file=/dir/heap.bin
這個(gè)heap.bin就是當前內存中的內容。如果很大,可以用gzip壓縮一下。
此時(shí)就有很多工具來(lái)分析heap.bin了,我使用的是
eclipse memory analyzer 。具體使用方法比較簡(jiǎn)單,里面可以看到每個(gè)對象的占用情況。
上兩個(gè)我的程序出問(wèn)題時(shí)的截圖:
通過(guò)這兩個(gè)圖,很容易就定位出了Cache里的filter變量有問(wèn)題。
我的實(shí)踐中,改進(jìn)之后,內存占用從1G下降到了60多M。
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請
點(diǎn)擊舉報。