Estoy tratando de crear un perfil de mi aplicación java, solo para descubrir los métodos en los que se gasta la mayor parte del tiempo. Dadas las malas reacciones aquí al TPTP, pensé en darle una oportunidad a Java VisualVM.No puedo ver mis propios métodos de aplicación en Java VisualVM
Parecía bastante simple de usar, excepto que parece que no puedo obtener nada consistente o útil.
Parece que no veo nada relacionado con MI PROPIO código; todo lo que obtengo es un montón de llamadas a cosas como java. * Métodos.
He intentado restringir la instrumentación solo a mis propios paquetes, lo que parece reducir el número de métodos instrumentados, pero todavía no parece que vea el mío.
Cada vez que corro, obtengo varios métodos instrumentados, que van desde 10 a 1000. Intenté conciliar el sueño al inicio de mi aplicación, para asegurarme de que VisualVM funciona correctamente antes de que mi aplicación comience a hacer algo interesante, para asegurarme de que se está perfilando cuando se está ejecutando algo interesante.
¿Hay algo que deba hacer para asegurar que mis clases se instrumenten? ¿Hay problemas de sincronización? ..like, tiene que esperar que se carguen las clases, etc.? También intenté ejecutar las tripas del código dos veces, para asegurarme de que todo el código se ejerce ...
Solo estoy ejecutando una aplicación, con una fuente principal, de Eclipse. Intenté usar la integración de Eclipse para que VisualVM se inicie cuando inicie la aplicación: los resultados son los mismos. También intenté exportar la aplicación como una aplicación ejecutable, y ejecutarla de forma independiente desde la línea de comandos, en lugar de a través de Eclipse, el mismo resultado.
Mi aplicación no es una aplicación web de larga ejecución, etc. - solo una principal que llama a algunas de mis propias clases para procesar, luego se cierra.
¡Estaría agradecido por cualquier consejo sobre lo que podría estar haciendo mal! :)
Gracias!
No sé si esto haría alguna diferencia, pero ¿ha compilado su aplicación sin ninguna información de depuración? ¿O su aplicación utiliza un cargador de clases personalizado? –
Hay una técnica poco didáctica pero simple y efectiva: http://stackoverflow.com/questions/266373/one-could-use-a-profiler-but-why-not-just-halt-the-program/317160# 317160 –