JVMのヒープ・ダンプ・ファイルおよびアクセス方法についてのトーク

JVMのヒープ・ダンプ・ファイル(ヒープ・ダンプは)時点、Javaプロセスのメモリのスナップショットです。これは、メモリがまだフルGCを回復していないオブジェクトやクラスの情報が含まれています。

1つのファイルの内容

ヒープダンプファイルには、次のものが含まれています。

  1. すべてのオブジェクト - クラスに対応するオブジェクト、フィールド、およびネイティブのデータ型への参照。
  2. すべてのカテゴリ - クラスローダ、クラス名、スーパークラスと静的フィールド。
  3. ルートガベージコレクタ - Javaのガベージコレクションオブジェクトを再利用することができるかどうかを決定するために、到達可能性分析を、それを使用することです。
  4. スレッド・スタックとローカル変数。

情報は、オブジェクトの作成者を見つけることができないので、ヒープ・ダンプ・ファイルは、情報を共有するために保存されていないため。

自動生成モード2

私たちは、JVMを設定することができ-XX:+HeapDumpOnOutOfMemoryError、ヒープ・ダンプ・ファイルを生成し、自動的に、作業ディレクトリになります、メモリオーバーフロー例外(のOutOfMemoryError)の場合のようにしています。

手動生成モード3

3.1 jmapのコマンド

jmap -dump:format=b,file=<filename.hprof> <pid>
复制代码
  • 前記フォーマット= B、ダンプは、バイナリ形式で表現しました。
  • ファイルには、ダンプファイルパスサフィックスのhprofを指定します。
  • pidはプロセスIDを表します。

WindowsのCMDでは、プロセスIDを確認するには、コマンドタスクリストを使用することができます。

3.2 jconsoleをコンソール

JConsoleは(Java監視および管理コンソール)、JDKを監視および管理ツールが付属しています。

まず、$ {JDK_HOME} /bin/jconsole.exe、オープンなプロセス接続リストをダブルクリックして、我々はダンププロセスを選択する必要があります。

デフォルトでは、ここではSSL、一般的に使用されていないローカルなので、直接選択「安全でない接続」を使用することです。

接続に成功したら、一目で監視を入力します。

それは、ヒープ・ダンプ・ファイルを生成することができるように、dumpHeap、HPROFのP0における入力ファイルのエクスポートパスでHostSpotDiagnosic下のMBean→のcom.sun.managementを選択します。

3.3 Eclipseのメモリアナライザ

また、入口チェン盛から直接、ヒープ・ダンプ・ファイルをEclipseのメモリアナライザを使用することができます。オープンメモリーアナライザ、→それは我々が選択プロセスをダンプする、ローカルプロセスのリストを開き、そして優れたヒープメモリへのパスを指定し、右上隅をダンプヒープを取得し、ファイルをクリックします。

私たちは圧縮パスとエクスポートパラメータの開発かどうか、アクティブなオブジェクトのみをエクスポートするかどうか、輸出の種類を設定することができヒープダンププロバイダパラメータの設定ページを入力します、[次へ]をクリックします:


個人的に私は単純明快、jmapのコマンドを好みます。

おすすめ

転載: juejin.im/post/5d57bbcd5188253761068f3f