Es fundamental entender el código correctamente previamente a usarlo a tu trabajo si tdeseas aportar algo puedes dejarlo en la sección de comentarios.
Solución:
Puede intentar usar la opción JVM OnOutOfMemoryError
-XX:OnOutOfMemoryError="/yourscripts/tomcat-restart"
También es posible generar el volcado de pila para su posterior análisis:
-XX:+HeapDumpOnOutOfMemoryError
Ojo con combinar estas dos opciones. Si fuerza la eliminación del proceso en “tomcat-restart”, es posible que el volcado del montón no esté completo.
Sé que esto no es lo que preguntaste, pero ¿has intentado mirar a través de un volcado de montón para ver dónde puedes estar perdiendo memoria?
Algunas herramientas muy útiles para rastrear pérdidas de memoria:
jdk/bin/jmap -histo:live pid
Esto le dará un histograma de todos los objetos activos actualmente en la JVM. Busque cualquier conteo de objetos impares. Deberá conocer su aplicación bastante bien para poder determinar qué recuentos de objetos son impares.
jdk/bin/jmap -dump:live,file=heap.hprof pid
Esto volcará todo el montón de la JVM identificada por pid. Luego puede usar el gran Eclipse Memory Analyzer para inspeccionarlo y descubrir quién se aferra a las referencias de sus objetos. Sus dos mejores amigos en Eclipse Memory Analyzer son el histograma y un right click -> references -> exclude weak/soft references
para ver qué hace referencia a su objeto.
jconsole es, por supuesto, otra buena herramienta.
no fácilmente, y definitivamente no a través de la JVM que acaba de sufrir la excepción de falta de memoria. Su mejor apuesta sería una combinación de monitor de estado de tomcat junto con secuencias de comandos cron o secuencias de comandos de administrador de sistema programadas relacionadas; algo para verificar el estado del servidor y detener y reiniciar automáticamente el servicio si ha fallado.
Te mostramos reseñas y calificaciones
Tienes la opción de confirmar nuestra publicación ejecutando un comentario o valorándolo te damos la bienvenida.