monitoreo de aplicaciones java
Una de las ventajas de correr Java 6 es que cualquier proceso puede ser monitoreado localmente sin especificar ninguna propiedad especial. Yo ya le encontre utilidad: un programa estaba consumiendo bastante memoria, el cual ya estaba corriendo, y que no deseaba reiniciar, pude sacar suficientes pistas con poco esfuerzo para resolver un problema de memoria.
Lectura recomendada: http://java.sun.com/developer/technicalArticles/J2SE/monitoring/.
Por ejemplo, para ver la cantidad de instancias por clases:
juan@aretha ~ $ /opt/sun-jdk-1.6.0/bin/jmap -histo:live 22130 num #instances #bytes class name -------------------------------------- 1: 20441 2353200 <constMethodKlass> 2: 81009 1944216 java.lang.String 3: 80867 1728608 [C 4: 20441 1639312 <methodKlass> 5: 33582 1298728 <symbolKlass> 6: 1780 945704 <constantPoolKlass> 7: 1780 740664 <instanceKlassKlass> 8: 1498 577488 <constantPoolCacheKlass> 9: 23593 566232 java.util.HashMap$Entry 10: 2568 431944 [B 11: 721 279008 [Ljava.lang.String; 12: 1698 273952 [Ljava.util.HashMap$Entry; 13: 3451 204800 [Ljava.lang.Object; 14: 2018 193728 java.lang.Class 15: 2387 156952 [S 16: 2775 133544 [[I 17: 6815 109040 org.pdfbox.cos.COSInteger 18: 1719 81704 [I 19: 4728 75648 org.pdfbox.cos.COSName ...
0 comments