java 如何定位java內存泄漏問題

1、 下載項目中對應的JDK版本。

2、 執行tar -xf jdk-8u262-linux-suse-x64.tar.gz解壓jdk。

3、 查找ps命令查找微服務進程ID。

4、 執行./jdk1.8.0_262/bin/jmap -dump:live,format=b,file=dump_memory.bin 1487620命令導出堆內存(dump_memory.bin爲導出文件名稱,1487620爲進程ID號)ps:此處需要注意項目執行的權限。

5、 命令執行完成後,會在/home/ossuser目錄下生成堆內存文件dump_memory.bin,並下載到本地機器(安全PC)。

6、 通過https://www.eclipse.org/mat/downloads.php下載MemoryAnalyzer軟件。

9、 在本地機器上運行MemoryAnalyzer軟件,並通過該軟件打開dump_memory.bin文件。MemoryAnalyzer會解析內存數據,耗時預計會有幾分鐘。

10、內存分析完成後,會提示Memory Leak分析,也可以通過Reports -> Leak Suspects查看內存佔用比較大的對象。

11、系統會按照對象佔用大小進行排序,如下圖:

12、點擊Problem Suspect 1中的Details信息查看內存佔用,找到內存佔用比較大的類,再根據代碼確認內存佔用是否合理。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章