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

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

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

Ответ 1

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

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

Ответ 2

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

image of monitoring application with Visual VM

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

Ответ 3

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