Почему JVM использует больше памяти, чем я выделяю - PullRequest
0 голосов
/ 22 ноября 2010

Я запускаю процесс Java с помощью следующей команды:

java -Xmx32m -jar winstone-lite.jar --warfile = myWarFile.war

Вместо использования объема памятиЯ уточнил, что все еще выделяю 144м.

РЕДАКТИРОВАТЬ: когда я говорю «выделить», я имею в виду, когда я смотрю на «верхний» процесс, я вижу 144 м как объем используемой памяти.

Я использую http://www.oracle.com/technetwork/java/embedded/documentation/index.html текущая версия.

Я бы подумал, что если бы моему приложению требовалось больше памяти, чем я выделяю, jvm вылетал бы.

1 Ответ

3 голосов
/ 22 ноября 2010

-Xmx просто сообщает JVM, сколько памяти он может использовать для своей внутренней кучи.

JVM нужна память для других целей (постоянная генерация, временное пространство и т. Д.), А также, как и для каждого двоичного файла, в котором она нуждаетсяместо для его собственного двоичного кода, плюс любые библиотеки / DLL /. так он загружается.

Цитируемые вами 144 МБ, вероятно, содержат, по крайней мере, некоторые из этих других использований памяти.

Как вы измерилииспользование памяти?В современных ОС, использующих виртуальную память, измерение использования памяти процессом не является тривиальным и не может быть выражено как одно значение.

...