lunes, septiembre 12, 2005

Un poco más de memory leaks en Java

Bueno, sigo detrás de mi fantasma particular de un servidor Tomcat corriendo Mapinfo que se dedica a ocupar toda la memoria. Acabo de descubrir JMP, Java Memory Profiler. Este programa es una DLL que se inyecta en la máquina virtual y permite obtener información de varios aspectos de la misma: métodos que se están ejecutando, consumo de memoria, objetos instanciados. Permite mostrar una ventana con los diferentes consumos, forzar el proceso de recolección de basura de la máquina virtual, obtener volcados del heap de la misma,....

Voy a usar esta herramienta para intentar determinar cual es el problema que está causando que el servidor se quede sin memoria cada cierto tiempo. En principio, no debería existir leaks de memoria en Java. Sin embargo existe ciertas condiciones donde pueden producirse: por ejemplo se conservan referencias a objetos que realmente no se usan más. Por otra parte, las versiones de la máquina virtual Java de Sun que no sean la HotSpot, utilizan un algoritmo de recolección de basura que puede dar lugar a estos comportamientos.

Más herramientas que pueden servir para detectar estos comportamientos puede encontrarse en este enlace de Java PerformanceTuning

2 comentarios:

Anónimo dijo...

Hey, nice blog and great info!
Guess who's back with even more information on where you can find everything about how to make a budget and how to make a budget related information?
Come and check it out if you get time I would really appreciate it :-)

Anónimo dijo...

muy buena informacion, Como se instala esta herramienta en windows 2003 server corriendo tomcat y la maquina virtual de java al realizar una consulta a una base de datos este me vota un error cada cierto tiempo memoria insuficiente.