tabla son sistema que programas programacion operativo los encargados ejemplos eficiente cualquier cual corran compilados compilador codigo java jvm heap-dump

programacion - son los encargados de que los programas compilados en java corran en cualquier sistema operativo



¿Es posible crear una instancia de un JVM desde un volcado de pila? (3)

Todo el mundo sabe que un volcado de pila se puede obtener de una JVM en ejecución. ¿Es la otra manera posible? ¿Podemos iniciar una JVM utilizando un volcado de pila?

He estado teniendo esta pregunta en mente desde hace mucho tiempo. Si esto es posible, se resolvería mucho tiempo y sería más fácil para un ingeniero de soporte. Es de gran ayuda en los casos en que si tenemos que recrear algunos de los problemas poco comunes que enfrenta nuestro cliente. [Imagine que el hardware subyacente y el tiempo de ejecución de Java son los mismos y que todos los archivos de soporte también están presentes en la ubicación correspondiente en el sistema de archivos].

Nota agregada: la intención de hacer esto no es cuando se produce OOM sino en cualquier momento dado después de que se inicia JVM.


Creo que está buscando herramientas como Java Mission Control y Chronon DVR (comercial). Estos le ayudan a analizar incidentes, recopilar eventos y crear perfiles, depurar viajes en el tiempo (como lo expresa chronon)

Según su documentación:

Control de la misión de Java

Java Flight Recorder y Java Mission Control juntos crean una cadena de herramientas completa para recopilar continuamente información de tiempo de ejecución detallada y de bajo nivel que permite el análisis de incidentes después de los hechos. Java Flight Recorder es un marco de recopilación de eventos y perfiles integrado en el JDK de Oracle. Permite a los administradores y desarrolladores de Java recopilar información detallada de bajo nivel sobre cómo se comportan la Máquina Virtual de Java (JVM) y la aplicación Java. Java Mission Control es un conjunto avanzado de herramientas que permite un análisis eficiente y detallado de la gran cantidad de datos recopilados por Java Flight Recorder. La cadena de herramientas permite a los desarrolladores y administradores recopilar y analizar datos de aplicaciones Java que se ejecutan localmente o implementadas en entornos de producción. Comenzando con el lanzamiento de Oracle JDK 7 Update 40 (7u40)

Algunas características clave de Chronon Recording Server que serán útiles en su caso:

El servidor de grabación está diseñado específicamente para aplicaciones del lado del servidor de larga ejecución que se ejecutan durante semanas o meses a la vez. El Servidor de grabación se encargará de dividir la grabación si es demasiado grande y de eliminar las grabaciones antiguas.

Deshágase de la necesidad de ver archivos de registro largos y poco detallados para depurar su programa. Simplemente reproduzca toda la ejecución y vea exactamente lo que ocurrió en su programa. El Servidor de grabación hace que comparta grabaciones en diferentes máquinas entre los miembros del equipo o entre varios equipos.


Para crear un volcado de pila desde una JVM en ejecución, también puede usar jhat, o jcmd (con el comando GC.heap_dump), ambos existen en la carpeta JDK / bin. MAT es una forma de analizar los contenidos del vertedero. Java Mission Control tiene una herramienta llamada JOverflow que analiza los volcados de pila, pero solo para observar los patrones de pérdida de memoria.

Nunca he oído hablar de ninguna manera de reiniciar una JVM desde una especie de imagen, un volcado de pila no sería suficiente, ya que solo contiene los objetos Java, no el código compilado y otras cosas.


No tu no puedes Necesitarías cosas como la posición actual en cada archivo abierto. Eso afecta a qué datos se devuelven en una simple lectura secuencial. El restaurador necesitaría abrir cada archivo y colocarlo en la posición correcta. Eso puede no ser posible para las corrientes no buscables.

La serialización específica del programa es una ruta mucho más factible, luego configure el programa desde allí.

Además, dado que los volcados de pila suelen ser de las situaciones OutOfMemory, la recreación de JVM a partir de la misma volvería a generar la excepción OutOfMemoryException. Si está realizando un volcado de almacenamiento intermedio, serialice los objetos y recupérelos cuando aparezca jvm.

(Contenido copiado de los comentarios de esta pregunta, Autores almas-shaikh y patricia-shanahan )