Mostrando las entradas con la etiqueta § Monitoreo. Mostrar todas las entradas
Mostrando las entradas con la etiqueta § Monitoreo. Mostrar todas las entradas

15 de septiembre de 2011

¿Cuánta memoria usa cada clase en Java?

Las siguientes herramientas nos ayudarán a diagnosticar en qué se consume la memoria heap en la máquina virtual de Java: jmap y jhat, las cuales están incluidas en el JDK.

Heap histogram

The jmap command will help you get a heap histogram that shows the per-class statistics, including the total number of instances and the total number of bytes occupied by the instances of each class.

http://java.sun.com/developer/technicalArticles/J2SE/monitoring/#Heap_Histogram

$ <JDK>/bin/jmap -histo:live <pid>
num   #instances    #bytes  class name
--------------------------------------
  1:    100000    41600000  [LMemLeak$LeakingClass;
  2:    100000     2400000  MemLeak$LeakingClass
  3:     12726     1337184  <constMethodKlass>
  4:     12726     1021872  <methodKlass>
  5:       694      915336  [Ljava.lang.Object;
  6:     19443      781536  <symbolKlass>
  7:      1177      591128  <constantPoolKlass>
  8:      1177      456152  <instanceKlassKlass>
  9:      1117      393744  <constantPoolCacheKlass>
 10:      1360      246632  [B
 11:      3799      238040  [C
 12:     10042      160672  MemLeak$FinalizableObject
 13:      1321      126816  java.lang.Class
 14:      1740       98832  [S
 15:      4004       96096  java.lang.String
 < more .....>

Heap dump & analysis

http://java.sun.com/developer/technicalArticles/J2SE/monitoring/#Heap_Dump
http://java.sun.com/developer/technicalArticles/J2SE/monitoring/#Heap_Analysis

You can use the jmap command to get a heap dump with this command line:

$ <JDK>/bin/jmap -dump:live,file=heap.dump.out,format=b <pid>

You can use the jhat command to do the heap analysis and determine which references are keeping the leak suspect alive:

$ <JDK>/bin/jhat heap.dump.out

This tool supports a number of queries including the following:
  • Show all reference paths from the root set to a given object. This is particularly useful for finding memory leaks. 
  • Show the instance counts for all classes. 
  • Show the heap histogram including the instance counts and sizes for all classes. 
  • Show the finalizer summary.

11 de enero de 2011

Monitorando WebLogic 10.3.2 con JMX y JConsole

Se puede usar JMX para monitorear el uso de memoria, del CPU y qué está haciendo cada hilo de ejecución (thread) en un servidor WebLogic.


Para habilitar JMX agregué, al script de inicio de mi instancia de desarrollo, los siguientes parámetros, descritos en PerformanceEngineer.com:

-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=8888
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false

Después ejecuté JConsole, que se distribuye como parte del JDK, agregando el siguiente parámetro:

service:jmx:rmi:///jndi/rmi://127.0.0.1:8888/jmxrmi

JConsole también permite monitorear el uso de los distintos tipos de memoria, condiciones de bloqueo mutuo entre threads (deadlocks), y desplegar información de los MBeans.

Por supuesto, también existe VisualVM que es un proyecto más completo para monitorear aplicaciones hechas en Java.

Espero te sirvan los siguientes libros (lista automática):

10 de enero de 2011

Cómo usar Log4J en un EJB en WebLogic 10.3.2

Para usar Log4J dentro de un EJB en WebLogic versión 10.3.2, necesitas:
  1. Copiar el archivo xml4j.jar en el directorio APP-INF\lib dentro de tu archivo .ear.
  2. Copiar el archivo de configuración de Log4J (yo usé log4j.xml) en el directorio APP-INF\classes dentro de tu archivo .ear.
Quedará una estructura como la siguiente:
  • Aplicación.ear
    • APP-INF
      • classes
        • xml4j.xml
      • lib
        • xml4j.jar
    • AplicaciónWeb.war
El directorio APP-INF\lib es propietario de WebLogic. En su lugar, en GlassFish puedes usar el tag <library-directory> del estandar Java EE 5.

Log4J es una biblioteca de Java para escribir un registro o bitácora de las actividades de un sistema de cómputo.

Libros que espero te sean útiles: