Durante la ejecución, ¿cómo puede un programa Java decir cuánta memoria está usando?Durante la ejecución, ¿cómo puede un programa Java decir cuánta memoria está usando?
¡No me importa lo eficiente que sea!
Durante la ejecución, ¿cómo puede un programa Java decir cuánta memoria está usando?Durante la ejecución, ¿cómo puede un programa Java decir cuánta memoria está usando?
¡No me importa lo eficiente que sea!
respuesta de VonC es una solución interactiva - si usted quiere saber mediante programación, puede utilizar Runtime.totalMemory() para averiguar la cantidad total utilizada por la JVM, y Runtime.freeMemory() para averiguar cuánto de esto es todavía disponibles (es decir, se asigna a JVM, pero no se ha asignado dentro de JVM - los objetos nuevos pueden usar esta memoria).
Estos son los métodos de instancia: use Runtime.getRuntime() para obtener primero la instancia de singleton.
Si usted es un java1.6 en algún lugar y el programa se ejecuta en Java 1.4.2, 1.5 o 1.6, puede iniciar un visualVM session, conectarse a su aplicación, y siga la memoria (y mucho más)
(las imágenes no se muestran en este momento, así que por favor se refiere a Monitoring an application para una ilustración.)
Gracias CMS, y gracias a quien subió de categoría esto ... considerando que no era exactamente lo que el usuario solicitó;) – VonC
java.lang.Runtime.totalMemory() le dará la información necesaria - http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Runtime.html
Esto no será exacto, pero para una estimación aproximada, simplemente reste Runtime.getRuntime.freeMemory()
de Runtime.getRuntime.totalMemory()
. Haga eso al comienzo del programa para tener una idea del uso de la memoria de sobrecarga JVM's
y a intervalos más tarde en la ejecución.
Está en lo correcto (mi reacción inicial fue monitorear desde el exterior), +1 a usted;) – VonC
Jon Skeet, hola, ¿puedes decirme cómo hacer lo mismo con C#? en Java, restaría el total, ¿verdad? Y en C# solo encontré PrivateMemorySize64 en la clase Process, pero supongo que solo da la memoria total, ¿no? – Pavel
@ paulpaul1076: Sería mejor hacer una nueva pregunta para eso. –