Как во время выполнения программа java может определить, сколько памяти она использует? - PullRequest
28 голосов
/ 27 октября 2008

Во время выполнения, как java-программа может определить, сколько памяти она использует?

Мне все равно, насколько это эффективно!

Ответы [ 4 ]

31 голосов
/ 27 октября 2008

Ответ VonC - это интерактивное решение - если вы хотите знать программно, вы можете использовать Runtime.totalMemory () , чтобы узнать общую сумму, используемую JVM, и Runtime.freeMemory ( ) чтобы узнать, сколько из этого еще доступно (то есть выделено для JVM, но не выделено в JVM - новые объекты могут использовать эту память).

Это методы экземпляра - используйте Runtime.getRuntime () , чтобы сначала получить экземпляр синглтона.

4 голосов
/ 27 октября 2008

Это не будет точным, но для грубой оценки, просто вычтите Runtime.getRuntime.freeMemory() из Runtime.getRuntime.totalMemory(). Сделайте это в начале программы, чтобы получить представление об использовании служебной памяти JVM's и с интервалами после выполнения.

4 голосов
/ 27 октября 2008

Если у вас где-то есть java1.6, а ваша программа работает на java 1.4.2, 1.5 или 1.6, вы можете запустить visualVM session , подключиться к вашему приложению и следить за памятью ( и многое другое)

image of monitoring application with Visual VM

(В данный момент изображения не отображаются, поэтому см. Мониторинг приложения для иллюстрации.)

0 голосов
/ 27 октября 2008

java.lang.Runtime.totalMemory () предоставит вам необходимую информацию - http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Runtime.html

...