¿Cómo puedo tomar un volcado de pila en Java 5 sin recolección de basura en primer lugar?

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

Pregunta

Tenemos una aplicación de servidor de larga duración ejecutar Java 5, y perfilado de ella podemos ver la antigua generación que está creciendo lentamente con el tiempo. Se liberó correctamente en un GC completo, pero me gustaría ser capaz de mirar a los objetos inalcanzables en Eclipse MAT utilizando un volcado del montón. He obtenido con éxito un volcado de pila usando + XX: HeapDumpOnCtrlBreak, pero la JVM siempre hace un GC antes de volcar el montón. Al parecer, esto no sucede en Java 6, sino que estamos atrapados el 5 por ahora. ¿Hay alguna forma de evitar esto?

¿Fue útil?

Solución

Sugiero un perfilador de tercera persona tal como YourKit , lo que puede permitir captar instantáneas sin dar comienzo al primer GC. Un valor añadido, se puede tomar una instantánea sin las travesuras toda ctrl-break.

Otros consejos

El uso jconsole o VisualVM o JMC o ... otra consola de administración JMX. abrir HotSpotDiagnostic en com.sun.management. Elija un método dumpHeap y la entrada de dos parámetros:

  • ruta de acceso al archivo de volcado
  • (verdadero / falso) volcar sólo los objetos vivos. false utilizar para volcar todos los objetos.

Tenga en cuenta que el archivo de volcado será escrito por la JVM conectado a, y no por jvisualvm, por lo que si la JVM se ejecuta en un sistema diferente, que será escrito en ese sistema.

 introducir descripción de la imagen aquí

¿Has probado la herramienta jmap estándar que se envía con el JDK? La cifra de jmap se introdujo oficialmente en Java 5.

línea de comandos Ejemplo: / Java / bin / jmap -heap: format = b

El resultado puede ser procesada con la herramienta jhat estándar o con aplicaciones GUI tales como MAT.

Tengo algo de código aquí que la programación puede tomar un volcado del montón sobre JMX:

Enlace: JmxHeapDumper.java

Los comentarios en el código fuente contienen 2 enlaces a artículos que contenían información útil acerca de cómo tomar vuelcos de almacenamiento dinámico. No sé a ciencia cierta, pero si estás de suerte, tal vez el enfoque JMX gustaría tener alguna manera de evitar la GC. Esperamos que esto ayude!

JProfiler ( EJ-tecnologías ) puede hacer esto.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top