Sospecho que tenemos una fuga de memoria importante en nuestro puente de conexión ActiveMQ: estamos viendo patrones típicos de fuga de memoria (la aplicación carga bien, se ralentiza si se ejecuta durante periodos prolongados o se reinicia una y otra vez durante cortos períodos de tiempo). Busqué las mejores prácticas modernas para encontrar fugas de memoria de Java y muchos desarrolladores parecen estar abandonando las herramientas tradicionales como jhat/jmap en lugar de la nueva (er) jvisualvm
.Cómo encontrar fugas de memoria usando visualvm
Al iniciar esta herramienta (y pasar unas horas leyendo su tutorial) puedo tomar instantáneas de perfil tanto para la CPU como para la memoria.
Estoy atascado en este punto. ¿Cómo analizo estas instantáneas para identificar la fuga? Hay una gran cantidad de documentación sobre cómo usar jvisualvm para producir instantáneas, pero muy poca documentación sobre cómo darles sentido.
Gracias de antemano.
¿Ha intentado ejecutar [FindBugs] (http : //findbugs.sourceforge.net) sobre la fuente? Encuentro eso bastante efectivo para identificar código que podría causar pérdidas de memoria. – Jivings
Gracias por la sugerencia, pero hay dos cosas: (1) Me han dicho una y otra vez que FindBugs es bueno para NullPointerExceptions pero no para pérdidas de memoria, y, más importante, (2) realmente quiero familiarizarme con jvisualvm, entonces, a menos que * claramente * no sea la herramienta adecuada para este trabajo, me interesa ver cómo se usa como herramienta de diagnóstico. ¡Gracias de nuevo por la buena sugerencia! – IAmYourFaja
Una pequeña cosa: Herramientas/Complementos/Complementos disponibles: instala Visual GC: el complemento muestra un mejor gráfico de tu memoria de pila y estado de GC. – coolcfan