2012-09-12 15 views
7

Tengo un volcado de hprof grande (5GB), creado por la aplicación cuando ocurrió OutOfMemoryError. (Usando XX: HeapDumpOnOutOfMemoryError).¿Es posible ver los subprocesos de dump dump/threads en heap dump

Lamentablemente, no se recopilaron registros cuando se produjo este error. Volver a crear esto tomará un par de horas. Esperaba que algunas herramientas pudieran mostrar el seguimiento de la pila de excepción o todas las pilas de subprocesos, etc. de hprof.

Actualmente estoy usando MAT, no he podido ver la forma de obtener información sobre el hilo. ¿Qué herramienta podría usar?

(No estoy seguro si el archivo hprof tiene información sobre el subproceso/ubicación de la llamada cuando se produjo OOM).

(Yo sé que la forma de llevar el hilo de volcado en los casos normales. El problema aquí es el evento ya ha ocurrido, todo lo que tengo es el vertedero hprof.)

+1

VisualVM Try (http://docs.oracle.com/javase/6/docs/technotes/guides/visualvm/threads .html) –

+0

El volcado de pila no contiene información de subprocesos. Deberías mirar el volcado de subprocesos. – SiB

+0

@ RC. sí, cargó hprof usando VisualVM y tiene la opción de mostrar los volcados de hilo. ¿Podría marcar como respuesta? – Jayan

Respuesta

3

MAT puede show the threads directly now (quizás esto se agregó desde que se hizo la pregunta).

Hilos general

Para tener una visión general de todos los hilos en el volcado del montón usar la "Visión general de rosca" botón en la barra, como se muestra en la siguiente imagen. Alternativamente se podría utilizar el Query Browser> Thread Descripción y Pilas consulta:

screenshot of toolbar icon

+0

!! Finalmente respuesta real a mi pregunta :) – Jayan

0

No creo volcado de pila contiene la información de temas excepto la raíz de GC Si necesita información relacionada con el hilo, también debe realizar el volcado de hilo.

0

Eclipse MAT le permite ver los hilos sospechosos en el informe de Sospechosos de fugas. Busque las clases en el espacio de nombres de su aplicación con sus números de línea para encontrar la cantidad de memoria que ocupan en el montón. Esto le dará un indicio de clases con fugas.

0

Puede matar -3 la identificación del proceso para obtener un volcado de hilo a la salida estándar. Esto no matará el proceso de Java, así que puedes hacerlo tantas veces como quieras.

como RC indicó visualVM es una buena herramienta que le dará recuentos de objetos por tipo de clase y todo tipo de gráficos y herramientas de creación de perfiles.

0

Use visualvm.

tratar de analizar el gráfico cuando el espacio de almacenamiento dinámico supera perm ... u también debe comprobar las muestras de memoria & guardar la instantánea ..

Análisis de la pila de hilo ... ayudará a reducir al problema .

11

Respondiendo la pregunta. El crédito va a @ RC

  1. Abra el volcado usando visualvm. Se tarda un poco.
  2. clic en "temas al montón de basura"

visual vm with threads at heapdump

+0

http://stackoverflow.com/a/11903624/173149 dicen que esta es la característica "nueva" del formato de volcado de pila (fechada cerca de 2010). – gavenkoa

+1

Por mucho tiempo esta fue la respuesta. Ahora MAT ha mejorado los informes ... vea la respuesta de @matt b: http://stackoverflow.com/questions/12381534/is-it-possible-to-view-threads-from-hprof-dump-threads-in-heap -dump/41243806 # 41243806 – Jayan

-1

Para activar una opción su necesidad + y para desactivar una opción que necesita -

Lo que se confunde acerca de la documentación es que muestra la configuración predeterminada para "borrar" la configuración que ya tiene. Los que tienen + están activados por defecto y los que tienen - están desactivados por defecto. Esto significa que si copia cualquiera de las opciones + o - de la documentación, no deberían hacer nada (excepto cuando el valor predeterminado ha cambiado con el tiempo)

-XX: -HeapDumpOnOutOfMemoryError desactiva el volcado del almacenamiento dinámico, que es el predeterminado.

-XX: + HeapDumpOnOutOfMemoryError activa el volcado del montón.

Cuestiones relacionadas