que tienen una instancia de Tomcat que se expone el siguiente comportamiento:Cómo investigar la excesiva recolección de basura de Java
- aceptar una sola solicitud entrante http.
- Emita una solicitud a un servidor back-end y recupere aproximadamente 400 kb de XML.
- Pase este XML y transfórmelo en aproximadamente 400kb de JSON.
- Devuelve la respuesta JSON.
El problema es que durante el manejo de la solicitud de 400k, mi aplicación web genera aproximadamente 100mb de basura que llena el espacio Eden y desencadena una colección de generación joven.
He intentado utilizar la funcionalidad incorporada en java hprof para hacer perfiles de sitios de asignación pero Tomcat no pareció iniciarse correctamente con eso en su lugar. Es posible que estuviera un poco impaciente ya que imagino que los perfiles de asignación de memoria tienen una sobrecarga elevada y, por lo tanto, el arranque de tomcat puede llevar mucho tiempo.
¿Cuáles son las mejores herramientas para crear perfiles de memoria Java de objetos muy jóvenes/¿basura? No puedo usar los volcados de heap porque los objetos que me interesan son basura.
La creación de perfiles de Jvisualvm es difícil ya que mi servidor tomcat se ejecuta en Linux y prefiero evitar el exceso de ejecución en Windows donde realizo mi desarrollo o la instalación de un cuadro de Linux GUI. – mchr
Instale el JDK correspondiente en la Linuxbox y redireccione jvisualvm para usar un servidor X11 que se ejecute en su cuadro de Windows. Xming directamente en la máquina, o Knoppix ejecutándose en una sesión de vmware, funciona muy bien. –
También tenga en cuenta que si agrega el vudú apropiado a la invocación de JVM de Tomcat, jvisualvm puede conectarse desde su Windowsbox sin más preámbulos. –