Analizar ejecución de programa Java

0
31366

Análisis de programas Java (profiling)

Cuando construimos una aplicación Java, normalmente, no debemos de tratar de
hacerlo
optimizando….  (aunque esto no quita para utilizar técnicas sencillas que
sabemos que mejora el rendimiento de los programas).

Cuando ya hemos construido nuestra aplicación ( y hemos resuelto los problemas
de negocio), tenemos que darle otra vuelta y optimizar los puntos más críticos…

Si no lo hacemos por este orden …. es bastante fácil perder el norte.

Java nos proporciona unos comandos (opciones de comando Java) sencillos para ejecutar nuestra aplicación
y entender que está sucediendo por dentro.

Os vamos a mostrar como funcionan estas opciones con el jdk 1.4

Comandos para la optimización

Si vamos a la línea de comando y ejecutamos java -X, obtenemos la ayuda de
los comandos extendidos …

Vamos a prestar atención solo a una de las opciones …. 
(ya veremos en el futuro algunas más)

java –Xrunhprof optimizacion

Al ejecutar este comando, se genera un fichero (java.hprof.txt)
con toda la información relativa a la ejecución del programa.

El fichero generado es un poco duro de seguir…… así que
vamos a utilizar una herramienta gratuita para simplificar la labor, que podemos utilizar gracias a HP. Si
vamos a su Web, podemos encontrar recursos de gran calidad relativos al
rendimiento en Java.

Una de las herramientas más interesantes (para todos los
entornos) es HPjmeter…

Accedemos a al enlace…. (aceptamos la licencia) y descargamos el fichero

http://www.hp.com/products1/unix/java/hpjmeter/downloads/license_hpjmeter.html

El fichero es un ZIP que contiene otros ficheros. Los descomprimimos en el
directorio deseado.

Ahora, podemos arrancar la herramienta, ejecutando el comando:

java -jar HPmeter.jar

Nada más arrancarla, podemos observar su aspecto

Vamos a nuestro directorio y accedemos al fichero que se ha generado (al
ejecutar java –Xrunhprof optimizacion)

Y podemos ver los parámetros más sencillos… Ahora, recorriendo
los menús, podemos acceder a elementos vitales …. objetos creados, memoria
perdida, etc.

Análisis de nuestro programa

Teniendo una herramienta como ésta…. podemos empezar a
plantearnos donde están los problemas de rendimiento, memoria, etc.

Es posible.. que nos llevemos alguna (no grata) sorpresa …. solo tenemos que
ver la siguiente pantalla y comprobar el uso tan poco óptimo de los recursos…

Creación de Herramientas similares

Nosotros podemos crear nuestras propias herramientas para
perfilar el funcionamiento de nuestros programas.

Podéis encontrar la especificación en:

http://java.sun.com/j2se/1.4.2/docs/guide/jvmpi/jvmpi.html

Francamente… creo que no es nuestro objetivo (aunque será un
buen proyecto de fin de carrera… así que tomar nota) pero si queréis
saber un poco más sobre como hacerlo, podéis encontrar un proyecto en sourceforge.org.

 


Conclusiones

En numerosas ocasiones nos preocupamos de aprender cientos de
nuevas APIs y no sabemos manejar bien el lenguaje ni las básicas (bucles,
declaración de variables, excepciones, colecciones, etc..). Gracias a estas
herramientas podemos aprender a mejorar el comportamiento de nuestras
aplicaciones…

El mundo Java no es muy complejo aunque sí excesivamente
amplio…..

Sobre el
Autor ..

Dejar respuesta

Please enter your comment!
Please enter your name here