Параметры "кучи" JVM

Для этого необходимо понять стандартный IEEE 754 для надлежащего двоичного представления. После этого можно использовать Float.intBitsToFloat или Double.longBitsToDouble.

http://en.wikipedia.org/wiki/IEEE_754

64
задан icedwater 2 August 2013 в 02:11
поделиться

4 ответа

Подводя итог информации, найденной после ссылки: JVM выделяет количество, указанное параметром -Xms, но ОС обычно не выделяет реальные страницы, пока они не понадобятся. Таким образом, JVM выделяет виртуальную память, как указано в Xms, но выделяет физическую память только по мере необходимости.

Вы можете увидеть это, используя Process Explorer от Sysinternals вместо диспетчера задач в Windows.

Таким образом, существует реальная разница между использованием -Xms64M и -Xms512M. Но я думаю, что наиболее важным отличием является то, на которое вы уже указали: сборщик мусора будет запускаться чаще, если вам действительно нужны 512 МБ, но при запуске только с 64 МБ.

34
ответ дан 24 November 2019 в 15:57
поделиться

JVM адаптивно изменяет размер кучи, то есть пытается найти лучший размер кучи для вашего приложения. -Xms и -Xmx просто указывают диапазон, в котором JVM может работать и изменять размер кучи. Если -Xms и -Xmx - одно и то же значение, тогда размер кучи JVM останется постоянным на этом значении.

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

Что касается того, когда JVM фактически запрашивает память у ОС, я считаю, что это зависит от платформы и реализации JVM. Я предполагаю, что он не будет запрашивать память, пока она действительно не понадобится вашему приложению. -Xmx и -Xms просто резервируют память.

5
ответ дан 24 November 2019 в 15:57
поделиться

JVM запустится с использованием памяти на начальном уровне кучи. Если maxheap больше, он вырастет до размера maxheap, поскольку требования к памяти превышают текущую память.

Итак,

  • -Xms512m -Xmx512m

JVM начинается с 512 M, размер никогда не изменяется.

  • -Xms64m -Xmx512m

JVM начинается с 64 M, увеличивается (до максимального потолка 512), если mem . требования превышают 64.

35
ответ дан 24 November 2019 в 15:57
поделиться

, если вы написали: -Xms512m -Xmx512m когда он запускается, java выделяет в этот момент 512 МБ оперативной памяти для его процесса и не может увеличиваться.

-Xms64m -Xmx512m когда он запускается, java выделяет только 64 мб оперативной памяти для его процесса, но java может увеличивать занимаемую памятью до 512 м.

Я думаю, что второй вариант лучше, потому что вы передаете java автоматическое управление памятью.

4
ответ дан 24 November 2019 в 15:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: