Во время выполнения, как java-программа может определить, сколько памяти она использует?
Мне все равно, насколько это эффективно!
Ответ VonC - это интерактивное решение - если вы хотите знать программно, вы можете использовать Runtime.totalMemory () , чтобы узнать общую сумму, используемую JVM, и Runtime.freeMemory ( ) чтобы узнать, сколько из этого еще доступно (то есть выделено для JVM, но не выделено в JVM - новые объекты могут использовать эту память).
Это методы экземпляра - используйте Runtime.getRuntime () , чтобы сначала получить экземпляр синглтона.
Это не будет точным, но для грубой оценки, просто вычтите Runtime.getRuntime.freeMemory() из Runtime.getRuntime.totalMemory(). Сделайте это в начале программы, чтобы получить представление об использовании служебной памяти JVM's и с интервалами после выполнения.
Runtime.getRuntime.freeMemory()
Runtime.getRuntime.totalMemory()
JVM's
Если у вас где-то есть java1.6, а ваша программа работает на java 1.4.2, 1.5 или 1.6, вы можете запустить visualVM session , подключиться к вашему приложению и следить за памятью ( и многое другое)
(В данный момент изображения не отображаются, поэтому см. Мониторинг приложения для иллюстрации.)
java.lang.Runtime.totalMemory () предоставит вам необходимую информацию - http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Runtime.html