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