En casi todos los grandes proyectos de Java en los que he estado involucrado, he notado que la calidad del servicio de la aplicación se degrada con el tiempo de actividad del contenedor. Probablemente esto se deba a fugas de memoria en el código.¿Práctica recomendada para manejar fugas de memoria en grandes proyectos de Java?
La forma correcta de resolver este problema es, obviamente, rastrear la causa raíz del problema y corregir las fugas en el código. La forma rápida y sucia de resolver el problema es simplemente reiniciar Tomcat (o el contenedor de servlets que esté utilizando).
Estas son mis tres preguntas:
Suponga que usted elija para resolver el problema mediante el trazado de la causa raíz del problema (las pérdidas de memoria), ¿cómo recoger los datos para hacer un zoom sobre el problema ?
Supongamos que elige la forma rápida y sucia de acelerar las cosas simplemente reiniciando el contenedor, ¿cómo reuniría los datos para elegir el ciclo de reinicio óptimo?
¿Ha podido implementar y ejecutar proyectos durante un período de tiempo prolongado sin tener que reiniciar el contenedor de servlets para recuperar la elegancia? ¿O un servlet ocasional reinicia algo que uno simplemente tiene que aceptar?
+1 para la respuesta sencilla y sin sentido. Reiniciar el contenedor es una solución simple, pero no una solución a largo plazo. Automatizar el reinicio del contenedor es una solución automática, que tiene algunos de los beneficios de una solución, pero también tiene muchos inconvenientes. –