2010-08-21 17 views
6

Actualmente estoy usando VisualVM, pero el problema que tengo es que no puedo guardar los gráficos que genera. Necesito informar algunos datos sobre el uso de la memoria y el tiempo de ejecución, aunque el tiempo de ejecución es fácil de obtener con System.nanoTime(). También probé el NetBeans profiler pero no es lo que quiero, ya que no estoy buscando partes específicas que lo estén ralentizando ni nada, por lo que sería excesivo. El mayor problema es que consume demasiado tiempo de procesamiento. Además, no me permite capturar/transferir datos fácilmente, como VisualVM, al menos hasta donde sé.¿La mejor manera de medir el uso de la memoria de un programa Java?

Idealmente, la mejor manera de hacerlo sería llamar a algún método porque entonces podría obtener la información mucho más fácilmente, pero cualquier cosa como VisualVM que realmente me permita guardar el gráfico está bien. El rendimiento con VisualVM es bastante bueno también, en comparación con el generador de perfiles de NetBeans, aunque supongo que es porque no estaba usando su generador de perfiles.

Actualmente estoy usando Ubuntu, pero Windows 7 está bien. Prefiero tener un programa que se especialice en hacer esto, ya que la información obtenida por los programas que no lo hacen probablemente incluirá la JVM y otras cosas que sería mejor omitir.

Bueno, al parecer, puede guardar instantáneas de la sesión actual y maximizar la ventana en VisualVM, por lo que podría hacer las listas más grandes, tomar una instantánea y cortarlas ... Pero eso es como un truco. Mejores sugerencias bienvenidas.

Respuesta

0

Probar JProfiler. Aunque no es gratis, primero puedes probar la versión de evaluación.

3

Mire la clase Runtime. Tiene freeMemory, maxMemory y totalMemory. Eso es probablemente lo suficientemente cerca para sus propósitos.

0

La consola HPjmeter es gratuita. Ejecute su proceso de Java con -Xloggc:<file> y abra el <file> con él. No solo puedes guardar tus sesiones, sino que puedes comparar ejecuciones. Otras opciones a considerar incluidos en la línea de comandos son:

-XX:+PrintGCTimeStamps 
-XX:+PrintGCDetails 
2

Es posible que prefiera método elegante para medir la memoria, en lugar de cortar la imagen. Se conoce que JConsole supervisa aplicaciones por JMX, proporciona API de programa. Supongo que es lo que necesitas.

Ver: Using JConsole to Monitor Applications

15
Runtime.getRuntime().freeMemory(); 

Runtime.getRuntime().totalMemory(); 
Cuestiones relacionadas