Pregunta

Tengo un servidor de producción ejecutándose con el siguiente indicador: - XX: + HeapDumpOnOutOfMemoryError

Anoche generó un archivo java-38942.hprof cuando nuestro servidor encontró un error de montón. Resulta que los desarrolladores del sistema conocían la bandera pero no tenían forma de obtener información útil de ella.

¿Alguna idea?

¿Fue útil?

Solución

Si desea una herramienta bastante avanzada para hacer algunas búsquedas serias, mire el proyecto Memory Analyzer en Eclipse, contribuido a ellos por SAP.

Algo de lo que puede hacer es increíblemente bueno para encontrar pérdidas de memoria, etc., incluida la ejecución de una forma limitada de SQL (OQL) contra los objetos en memoria, es decir,

  

SELECCIONE toString (firstName) FROM com.yourcompany.somepackage.User

Totalmente brillante.

Otros consejos

Puede usar JHAT , el Herramienta de análisis de almacenamiento dinámico de Java proporcionada por defecto con el JDK. Es la línea de comando pero inicia un servidor web / navegador que usa para examinar la memoria. No es el más fácil de usar, pero al menos ya está instalado en la mayoría de los lugares a los que irá. Una vista muy útil es el "histograma de montón". enlace en la parte inferior.

ej: jhat -port 7401 -J-Xmx4G dump.hprof

jhat puede ejecutar OQL " en estos días " también (enlace inferior " ejecutar OQL ")

También puede usar HeapWalker del Netbeans Profiler o el < a href = "https://visualvm.github.io/" rel = "noreferrer"> Visual VM herramienta independiente. Visual VM es una buena alternativa a JHAT, ya que es independiente, pero es mucho más fácil de usar que JHAT.

Necesita Java 6+ para usar Visual VM por completo.

Simplemente obtenga el Eclipse Memory Analyzer . No hay nada mejor por ahí y es gratis.

JHAT solo se puede usar para "aplicaciones de juguete"

YourKit Java Profiler parece manejarlos también.

Si desea hacer un análisis personalizado de su heapdump, entonces hay:

Esta biblioteca es rápida pero necesitará escribir su código de análisis en Java.

De los documentos:

  • No crea ningún archivo temporal en el disco para procesar el volcado del montón
  • Puede trabajar directamente volcados de montón comprimido GZ
  • notación HeapPath
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top