Огромный дамп кучи (11 ГБ) - Jhat не удалось и Eclipse MAT нужна помощь
Мы получили ошибку памяти в нашем советнике и использовали -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/path/to/some/dir
чтобы свалить кучу во время ООМ.
У нас была куча памяти 12 ГБ и постоянная память 256 МБ.
Дамп кучи создается в окне Linux, где у нас запущено приложение, и его размер составляет 11,5 ГБ. У нас нет привилегий, чтобы загрузить его на наш сайт.
Когда мы попытались проанализировать этот дамп кучи размером 11 ГБ, используя JHAT, он выдал 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
Для всех опций выдается исключение OOM после чтения дампа в течение нескольких минут (>30 минут).
Мы гуглили его и обнаружили, что MAT - мощный анализатор дампов кучи, но не способ использовать его в LINUX.
Любые предложения будут иметь большую помощь. Благодарю.
Изменен:
Получил MAT на компьютере с Linux x86_64, но получил следующую ошибку при выполнении ./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)
3 ответа
Я вчера использовал MAT на Linux.... проверьте правильную версию здесь
Забудьте, что для разбора этого дампа вам понадобится более 100 гигабайт оперативной памяти, это заняло бы вечность, и было бы очень трудно что-то найти. Я только недавно установил MAT на машине SUSE 11. работал без нареканий. Можете ли вы убедиться, что MAT использует правильную JVM? Не уверен, тестируем ли мы это чем-то еще, кроме JVM SUN/SAP.
С уважением, Маркус ( Кохлерм)
В прошлом мы добились успеха, используя Netbeans для анализа ошибок OOM. Казалось, справиться там, где Затмение и JHAT не могли.