質問

EA でメモリ エラーが発生したため、 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/path/to/some/dir OOM 時にヒープをダンプします。

ヒープ メモリは 12 GB、perm gen は 256 MB でした。

ヒープ ダンプは、アプリケーションを実行している Linux ボックスで生成され、そのサイズは 11.5GB です。ローカルにダウンロードする権限がありません。

を使用してその 11GB ヒープダンプを分析しようとしたとき ジャット OOM がスローされました。

Linux CLI から次のコマンドを試しました。

jhat java_pid1491.hprof
jhat -J-Xmx16g -XX:-UseBiasedLocking java_pid1491.hprof
jhat -J-d64 -J-Xmx16g -J-XX:-UseBiasedLocking java_pid1491.hprof#1

すべてのオプションで、数分間 (30 分以上) ダンプを読み取った後、OOM 例外がスローされます。

グーグルで検索して見つけました マット 強力なヒープ ダンプ アナライザーとして機能しますが、LINUX で使用する方法ではありません。

何かご提案があれば大変助かります。ありがとう。

変更:

Linux x86_64 マシンに MAT をインストールしましたが、実行時に次のエラーが発生しました ./MemoryAnalyzer

(.:17319): GLib-GObject-WARNING **: invalid (NULL) pointer instance
(.:17319): GLib-GObject-CRITICAL **: g_signal_connect_data: assertion `G_TYPE_CHECK_INSTANCE (instance)' failed
(.:17319): Gtk-CRITICAL **: gtk_settings_get_for_screen: assertion `GDK_IS_SCREEN (screen)' failed
(.:17319): GLib-GObject-CRITICAL **: g_object_get: assertion `G_IS_OBJECT (object)' failed
(.:17319): Gtk-WARNING **: Screen for GtkWindow not set; you must always set
a screen for a GtkWindow before using the window
(.:17319): Gdk-CRITICAL **: gdk_pango_context_get_for_screen: assertion `GDK_IS_SCREEN (screen)' failed
(.:17319): Pango-CRITICAL **: pango_context_set_font_description: assertion `context != NULL' failed
(.:17319): Pango-CRITICAL **: pango_context_set_base_dir: assertion `context != NULL' failed
(.:17319): Pango-CRITICAL **: pango_context_set_language: assertion `context != NULL' failed
(.:17319): Pango-CRITICAL **: pango_layout_new: assertion `context != NULL' failed
(.:17319): Pango-CRITICAL **: pango_layout_set_text: assertion `layout != NULL' failed
(.:17319): Pango-CRITICAL **: pango_layout_set_attributes: assertion `layout != NULL' failed
(.:17319): Pango-CRITICAL **: pango_layout_set_alignment: assertion `layout != NULL' failed
(.:17319): Pango-CRITICAL **: pango_layout_set_ellipsize: assertion `PANGO_IS_LAYOUT (layout)' failed
(.:17319): Pango-CRITICAL **: pango_layout_set_single_paragraph_mode: assertion `PANGO_IS_LAYOUT (layout)' failed
(.:17319): Pango-CRITICAL **: pango_layout_set_width: assertion `layout != NULL' failed
(.:17319): Pango-CRITICAL **: pango_layout_get_extents: assertion `layout != NULL' failed
(.:17319): Gtk-CRITICAL **: gtk_icon_theme_get_for_screen: assertion `GDK_IS_SCREEN (screen)' failed
(.:17319): Gtk-CRITICAL **: gtk_settings_get_for_screen: assertion `GDK_IS_SCREEN (screen)' failed
(.:17319): Gtk-CRITICAL **: gtk_icon_size_lookup_for_settings: assertion `GTK_IS_SETTINGS (settings)' failed
(.:17319): Gtk-WARNING **: Invalid icon size 6
(.:17319): Gtk-CRITICAL **: gtk_icon_theme_load_icon: assertion `GTK_IS_ICON_THEME (icon_theme)' failed
Segmentation fault

私は試した ./ParseHeapDump.sh ../java_pid1491.hprof これで次のエラーが発生しました、

Caused by: java.lang.NoClassDefFoundError: com/ibm/dtfj/image/CorruptDataException
        at org.eclipse.mat.dtfj.InitDTFJ.stop(InitDTFJ.java:70)
役に立ちましたか?

解決

昨日、Linux で MAT を使用していました。適切なバージョンを確認してください ここ

他のヒント

Jhat のことは忘れてください。このダンプを解析するには 100Gybte 以上の RAM が必要です。永遠に時間がかかり、何かを見つけるのは非常に困難です。最近、SUSE 11 マシンに MAT をインストールしました。完璧に動作しました。MAT が正しい JVM を使用していることを確認していただけますか?SUN/SAP JVM 以外の何かでテストするかどうかはわかりません。

よろしく マーカス (コーレルム)

私たちは過去に Netbeans を使用して OOM エラーを分析することに成功しました。Eclipse と JHAT が対応できなかった場所にも対応しているようです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top