に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では、お気に入りのWebブラウザを使用してヒープダンプをブラウズできます。
jhat
で解析できるようにするには、hprof
バイナリ形式の出力が必要です。 format=b
オプションを使用すると、この形式でダンプを生成できます。
-dump:format=b,file=<filename>
jhatコマンドを実行してヒープダンプファイルを解析していますが、以下のエラーが表示されています: 'Read from 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
'jmap -dump:format = b、file =
jhatはユーザーフレンドリーなツールではありません。 –
あなたのIDEとしてEclipseを使用している場合、私はプラグイン優れた日食をお勧めしますmemory analyzer
別のオプションは、それはヒープが同様にダンプ読み(および作成)することができJVisualVMを使用することで、すべてが同梱されていますJDK。 JDKのbinディレクトリで見つけることができます。
ありがとう私は問題を分析するためにソフトウェアをダウンロードします。 – Chaitanya
MAT、jprofiler、jhatは可能なオプションです。 jhatにはjdkが付属しているので、簡単に起動して基本的な分析を行うことができます。 check this out
パスなしでjmap -heap:format=b <process-id>
を使用する必要があります。したがって、jvisualvm.exe
(jmapと同じパス)で開くことができる* .binファイルが作成されます。このようなダンプファイルを開くには素晴らしいツールです。
VisualVmにはApple JDKは付属していません。 VisualVM Macアプリケーションバンドル(dmg)を別のアプリケーションとして使用して、これを補うことができます。
これには非常に遅れていますが、簡単に見ていきましょう。詳細を理解するのに2分しかかかりませんでした。
まず>
C:\>jps
18588 Jps
17252 GarbageCollectionAnalysisExample
16048
2084 Main
コマンドVMID(仮想マシンIDすなわちJVMのID)
GoはCMDおよび以下を入力して検索し、この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は17252です。
今、私たちはjmapの使用方法を学び、
使用jmapのjhatます - jmapの 「共有jmapのプリントオブジェクトメモリマップまたはヒープメモリの詳細についてはJavaのドキュメントから
をダンプヒープを生成するために指定されたプロセスやコアファイルまたはヒープ・ダンプを生成するために、リモートデバッグサーバー」
次のコマンドを使用>
C:\>jmap -dump:file=E:\heapDump.jmap 17252
Dumping heap to E:\heapDump.jmap ...
Heap dump file created
ここで、17252はvmid(上から選択)です。
ヒープダンプがEに生成されます:\ 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'を試しましたか? –
このファイルはEclipse MATで正常に開きます。ちょうど.hprof拡張子を与えてください – iTake
http://stackoverflow.com/questions/185893/how-do-i-analyze-a-hprof-file – rogerdpack