Necesito una forma de solicitar un volcado del heap desde la aplicación.Solicitar el volcado del he va en java (volcado del núcleo) desde la aplicación
Justificación: Cuando me encuentro con una condición de error específica, me gustaría volcar el montón, para que pueda ver lo que está reteniendo en la memoria.
Pero me gustaría automatizar esto (por ejemplo, cuando detecto que se ha producido alguna condición específica o cuando un perro guardián ya no responde, cuando falla alguna prueba). Por lo tanto, necesito una forma de volcar el montón desde dentro de la aplicación. Parece que no puedo encontrarlo con las cosas de los frijoles MX. Aunque los MX Beans pueden dar muy buenos rastreos de pila con monitor, información de "sincronizador de usuario", interbloqueo e información de contención, parece que no puedo encontrar la forma de solicitar un volcado de pila. ¿Hay alguna manera? O por algún medio indirecto, por ejemplo, ¿cómo lo hacen estas cosas JVisualVM? ¿Y uno puede decirle a la JVM que descargue núcleo en OutOfMemoryExceptions ...?
Impresionante, justo lo que estaba buscando, ¡Gracias! Me parece sorprendente que no haya encontrado esa publicación de blog durante mi búsqueda en Google. Bajo sun.management, ¡aparentemente hay mucha diversión! – stolsvik
Sin embargo, un comentario más (volviendo a las ideas publicadas en el OP): desde su enlace "dump heap on OutOfMemoryError", puedo leer: "El volcador de heap incorporado también se puede usar para tomar una instantánea del montón en otras veces. Esto se hace usando la utilidad de línea de comandos jmap o la consola de administración y monitoreo de jconsole. ". Esas herramientas entonces probablemente usan el propietario de MXBean al que se refiere el segundo enlace? Me parece extraño que los beans MX estándar no tengan este método dumpHeap (fileName, live). – stolsvik
Algo molesto, sí, pero supongo que si fuera una funcionalidad estándar, el formato de volcado del montón también debería estar estandarizado. Por lo menos, imagino que eso sería mucho trabajo, y posiblemente podría limitar la libertad de los vendedores en sus implementaciones de VM. – gustafc