1、概念:java
在進行java應用故障分析時,常常須要分析內存和cpu信息,也就說所謂的heap dump 和 thread dumplinux
heap dump:數據庫
heap dump文件是一個二進制文件,須要工具heap analyze打卡查看,主要查看那些佔用了太多堆棧空間的內存信息。windows
thread dump:工具
文本文件,記錄進行具體的運行信息,能夠看到在那一點那一行所耗時最多,如數據庫查詢,長頁面等,能夠經過分析多個文件,查找發現問題的共同點來確認代碼所在問題點。性能
2、利用JDK自帶工具獲取thread dump 和 heap dumporm
工具: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