我創建使用下面的命令堆轉儲:如何分析利用JMAP堆轉儲在java中
jmap -dump:file=DumpFile.txt <process-id>
我已經打開生成的文件 - DumpFile.txt但它不是以可讀格式。 所以請讓我知道如何分析生成的文件中的數據。
我創建使用下面的命令堆轉儲:如何分析利用JMAP堆轉儲在java中
jmap -dump:file=DumpFile.txt <process-id>
我已經打開生成的文件 - DumpFile.txt但它不是以可讀格式。 所以請讓我知道如何分析生成的文件中的數據。
您可以使用jhat
(Java堆分析工具)來讀取生成的文件:
jhat [ options ] <heap-dump-file>
的命令與jHat解析Java堆轉儲文件並啓動Web服務器。 jhat使您能夠使用您最喜愛的瀏覽器瀏覽堆轉儲。
請注意,您應該有一個hprof
二進制格式輸出,以便能夠使用jhat
解析它。您可以使用format=b
選項以此格式生成轉儲。
-dump:format=b,file=<filename>
我運行了jhat命令分析堆轉儲文件,但我得到以下錯誤:'從447start.out讀取... java.io.IOException:無法識別的幻數:1027423549 at com.sun.tools.hat.internal.parser.Reader.readFile (Reader.java:81) at com.sun.tools.hat.Main.main(Main.java:143)'這裏447start.out是日誌文件的名稱。 – Chaitanya 2013-02-28 09:05:07
嘗試像'format = b'選項那樣轉儲:'jmap -dump:format = b,file =
jhat不是一個用戶友好的工具 – 2013-02-28 09:45:27
如果你使用Eclipse作爲IDE我會推薦優秀的Eclipse插件memory analyzer
另一種選擇是使用JVisualVM,它可以讀取(創建)堆轉儲的歡迎,並附帶每JDK。您可以在JDK的bin目錄中找到它。
謝謝我下載軟件來分析問題。 – Chaitanya 2013-02-28 11:45:22
MAT,jprofiler,jhat是可能的選項。因爲jhat帶有jdk,你可以輕鬆啓動它來做一些基本的分析。 check this out
您應該使用jmap -heap:format=b <process-id>
沒有任何路徑。因此它會創建一個* .bin文件,您可以使用jvisualvm.exe
(與jmap的路徑相同)打開該文件。這是一個很好的工具來打開這樣的轉儲文件。
VisualVm不附帶Apple JDK。您可以使用VisualVM Mac Application捆綁包(dmg)作爲單獨的應用程序來彌補這一點。
很晚纔回答這個問題,但值得快速瀏覽一下。僅需2分鐘即可詳細瞭解。
首先創建這個java程序
import java.util.ArrayList;
import java.util.List;
public class GarbageCollectionAnalysisExample{
public static void main(String[] args) {
List<String> l = new ArrayList<String>();
for (int i = 0; i < 100000000; i++) {
l = new ArrayList<String>(); //Memory leak
System.out.println(l);
}
System.out.println("Done");
}
}
使用JPS找到VMID(虛擬機ID IE JVM ID)
進入cmd,然後鍵入如下命令>
C:\>jps
18588 Jps
17252 GarbageCollectionAnalysisExample
16048
2084 Main
17252是我們需要的vmid。
現在我們將學習如何使用JMAP和與jHat
使用JMAP - 產生堆轉儲
從約JMAP Java文檔「共享對象存儲地圖或堆內存的詳細信息JMAP打印給定過程或核心文件或遠程調試服務器」
使用以下命令來生成堆轉儲>
C:\>jmap -dump:file=E:\heapDump.jmap 17252
Dumping heap to E:\heapDump.jmap ...
Heap dump file created
其中17252是vmid(從上面挑選)。
堆轉儲將在電子商務產生:\ heapDump.jmap
現在使用與jHat 與jHat用於在java中分析垃圾收集轉儲 -
C:\>jhat E:\heapDump.jmap
Reading from E:\heapDump.jmap...
Dump file created Mon Nov 07 23:59:19 IST 2016
Snapshot read, resolving...
Resolving 241865 objects...
Chasing references, expect 48 dots................................................
Eliminating duplicate references................................................
Snapshot resolved.
Started HTTP server on port 7000
Server is ready.
默認情況下,它會在端口7000上啓動http服務器。 然後我們將去http://localhost:7000/
提供:JMAP,How to monitor and analyze the garbage collection in 10 ways
你試過'jmap -heap> DumpFile.txt'嗎? –
2013-04-24 10:14:29
這個文件在Eclipse MAT中打開的很好,只是給它.hprof擴展 – iTake 2014-04-10 13:20:09
另請參見http://stackoverflow.com/questions/185893/how-do-i-analyze-a-hprof-file – rogerdpack 2015-03-30 15:16:15