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…..