java - jdk - Trigger Heap Dump de una JVM 1.5 ejecutándose en Windows
java offline (2)
Estoy tratando de diagnosticar un problema de pérdida de memoria PermGen en un servidor de aplicaciones Sun One 9.1. Para hacer eso, necesito obtener un volcado de pila del proceso de JVM. Desafortunadamente, el proceso de JVM es la versión 1.5 ejecutándose en Windows. Aparentemente, ninguna de las formas para activar un volcado de pila admite esa configuración. Puedo hacer que la JVM haga un volcado de pila después de que se quede sin memoria o cuando se apague, pero necesito poder descargar volcados de memoria en momentos arbitrarios.
Las dos formas mencionadas a menudo para obtener volcados de almacenamiento dinámico son usar jmap o usar el HotSpotDiagnostic MBean. Ninguno de los dos admite jvm 1.5 en Windows.
¿Hay algún método que me haya perdido? Si hay una manera de activar mediante programación un volcado de pila (sin utilizar el HotSpotDiagnostic MBean), eso también lo haría ...
Si realmente no es posible hacerlo en Windows, supongo que tendré que recurrir a la construcción de una máquina virtual Linux y a hacer mi depuración allí.
Gracias.
Si es 1.5.0_14 o posterior, puede usar -XX:+HeapDumpOnCtrlBreak
y presionar Ctrl-Break en la consola
Hubo una nueva opción de hotspot introducida en Java6, -XX:-HeapDumpOnOutOfMemoryError
, que en realidad se transfirió a la JVM de Java5.
http://java.sun.com/javase/technologies/hotspot/vmoptions.jsp
Dump Heap para archivar cuando se lanza java.lang.OutOfMemoryError. Manejable. (Introducido en 1.4.2 actualización 12, actualización 5.0 7.)
Es muy útil La JVM vive el tiempo suficiente para volcar su pila a un archivo y luego se cae.
Por supuesto, significa que tienes que esperar a que la filtración sea lo suficientemente grave como para desencadenar un OutOfMemoryError
.
Una alternativa es usar un generador de perfiles, como YourKit . Esto proporciona los medios para tomar una instantánea de montón de una JVM en ejecución. Creo que todavía es compatible con Java5.
PD: realmente necesitas actualizar a java 6 ...