문제

EA에 메모리 오류가 발생하여 다음을 사용했습니다. -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/path/to/some/dir OOM 시 힙을 덤프합니다.

우리는 12GB의 힙 메모리와 256MB의 perm gen을 가지고 있었습니다.

힙 덤프는 애플리케이션이 실행 중인 Linux 상자에서 생성되며 크기는 11.5GB입니다.우리는 그것을 우리 로컬에 다운로드할 권한이 없습니다.

우리가 다음을 사용하여 11GB 힙 덤프를 분석하려고 시도했을 때 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

모든 옵션에 대해 몇 분(>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 이외의 다른 것으로 테스트할지 여부는 확실하지 않습니다.

안부, Markus (콜럼)

우리는 과거에 Netbeans를 사용하여 OOM 오류를 분석하는 데 성공했습니다.Eclipse와 JHAT가 할 수 없는 부분에 대처하는 것처럼 보였습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top