java jvm heap dump及 thread dump分析


一、概念:

在進行java應用故障分析時,經常需要分析內存和cpu信息,也就說所謂的heap dump 和 thread dump

 

heap dump:

 heap dump文件是一個二進制文件,需要工具heap analyze打卡查看,主要查看那些占用了太多堆棧空間的內存信息。

thread dump:

文本文件,記錄進行具體的運行信息,可以看到在那一點那一行所耗時最多,如數據庫查詢,長頁面等,可以通過分析多個文件,查找發現問題的共同點來確認代碼所在問題點。

 

二、利用JDK自帶工具獲取thread dump 和 heap dump

 

工具:jmap 、jstack

1.獲取heap dump文件

        windows下切換到JDK_HOME/bin/,執行以下命令:jmap -dump:format=b,file=heap.hprof 2576 

        linux下切換到JDK_HOME/bin/,執行以下命令:./jmap -dump:format=b,file=heap.hprof 2576

        這樣就會在當前目錄下生成heap.hprof文件,這就是heap dump文件。

2.獲取thread dump文件

        windows下執行:jstack 2576 > thread.txt

        linux下執行:./jstack 2576 > thread.txt

windows/linux則會將命令執行結果轉儲到thread.txt,這就是thread dump文件。有了dump文件后,我們就能借助性能分析工具獲取dump文件中的信息。

 

3.如果我們只需要將dump中存活的對象導出,那么可以使用:live參數

jmap -dump:live,format=b,file=heapLive.hprof 2576   

說明:如上實例的2576是我當前需要分析的java進程PID

 

 

 

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM