تفريغ كومة ضخمة (11 جيجابايت) - فشل Jhat وكان Eclipse MAT بحاجة إلى المساعدة

StackOverflow https://stackoverflow.com/questions/6026959

سؤال

لقد حصلنا على خطأ في الذاكرة في EA الخاص بنا واستخدمناه -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/path/to/some/dir لتفريغ الكومة في وقت OOM.

كان لدينا ذاكرة كومة تبلغ 12 جيجابايت وذاكرة دائمة تبلغ 256 ميجابايت.

يتم إنشاء تفريغ الكومة في صندوق Linux حيث يتم تشغيل تطبيقنا ويبلغ حجمه 11.5 جيجابايت.ليس لدينا امتيازات لتنزيله على موقعنا المحلي.

عندما حاولنا تحليل تفريغ الكومة سعة 11 جيجابايت باستخدام جهات لقد ألقيت 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 دقيقة).

لقد بحثنا في جوجل ووجدنا ذلك حصيرة كمحلل قوي لتفريغ الكومة، ولكن ليس طريقة لاستخدامه في 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 الصحيح؟لست متأكدًا مما إذا كنا نختبره بأي شيء آخر غير أجهزة SUN/SAP JVM.

التحيات ، ماركوس (كوليرم)

لقد حققنا نجاحًا في الماضي باستخدام Netbeans لتحليل أخطاء OOM.يبدو أنه يتعامل مع ما لم يتمكن Eclipse و JHAT من التغلب عليه.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top