使用監控工具發現內存使用不斷增加,則有可能存在內存泄露,內存泄露可以使用jmap工具進行分析。jmap命令可以獲得運行中的jvm的堆的快照,從而可以離線分析堆,以檢查內存泄漏,檢查一些嚴重影響性能的大對象的創建,檢查系統中什么對象最多,各種對象所占內存的大小等等,可以使用jmap生成Heap Dump。
1.使用top命令查看是哪個進程耗的內存比較多。通過快捷鍵 shift+m 對內存進行排序。
2.執行命令打印堆棧信息 堆文件為 aaa.hprof jmap -dump:live,format=b,file=aaa.hprof 18037
3.使用mat分析工具對步驟2打印的aaa.hprof 文件進行分析找到占用大量內存的線程。為了找到內存泄露,獲取了兩個堆轉儲文件,兩個文件獲取時間間隔是一天(因為內存只是小幅度增長,短時間很難發現問題)。對比兩個文件的對象,通過對比后的結果可以很方便定位內存泄露。