Для этого необходимо понять стандартный IEEE 754 для надлежащего двоичного представления. После этого можно использовать Float.intBitsToFloat или Double.longBitsToDouble.
Подводя итог информации, найденной после ссылки: JVM выделяет количество, указанное параметром -Xms, но ОС обычно не выделяет реальные страницы, пока они не понадобятся. Таким образом, JVM выделяет виртуальную память, как указано в Xms, но выделяет физическую память только по мере необходимости.
Вы можете увидеть это, используя Process Explorer от Sysinternals вместо диспетчера задач в Windows.
Таким образом, существует реальная разница между использованием -Xms64M и -Xms512M. Но я думаю, что наиболее важным отличием является то, на которое вы уже указали: сборщик мусора будет запускаться чаще, если вам действительно нужны 512 МБ, но при запуске только с 64 МБ.
JVM адаптивно изменяет размер кучи, то есть пытается найти лучший размер кучи для вашего приложения. -Xms и -Xmx просто указывают диапазон, в котором JVM может работать и изменять размер кучи. Если -Xms и -Xmx - одно и то же значение, тогда размер кучи JVM останется постоянным на этом значении.
Обычно лучше просто установить -Xmx и позволить JVM найти лучший размер кучи, если нет конкретной причины, почему вам нужно предоставить JVM большую кучу при запуске JVM.
Что касается того, когда JVM фактически запрашивает память у ОС, я считаю, что это зависит от платформы и реализации JVM. Я предполагаю, что он не будет запрашивать память, пока она действительно не понадобится вашему приложению. -Xmx и -Xms просто резервируют память.
JVM запустится с использованием памяти на начальном уровне кучи. Если maxheap больше, он вырастет до размера maxheap, поскольку требования к памяти превышают текущую память.
Итак,
JVM начинается с 512 M, размер никогда не изменяется.
JVM начинается с 64 M, увеличивается (до максимального потолка 512), если mem . требования превышают 64.
, если вы написали: -Xms512m -Xmx512m когда он запускается, java выделяет в этот момент 512 МБ оперативной памяти для его процесса и не может увеличиваться.
-Xms64m -Xmx512m когда он запускается, java выделяет только 64 мб оперативной памяти для его процесса, но java может увеличивать занимаемую памятью до 512 м.
Я думаю, что второй вариант лучше, потому что вы передаете java автоматическое управление памятью.