И вообще, используются ли единицы для вариантов -Xmx
, -Xms
и -Xmn
("k", "M" и "G" или менее стандартные варианты "K", "m" или "g") Двоичный префикс кратен (т.е. степени 1024) или степени 1000?
В руководствах говорится, что они представляют килобайты (кБ), мегабайты (МБ) и гигабайты (ГБ), предполагая, что они являются степенью 1000, как определено в исходном СИ. Мои неофициальные тесты (в которых я не очень уверен) показывают, что они действительно составляют кибибайты (киБ). , мебибайты (МиБ) и гибибайты (ГиБ), все степени числа 1024.
Так что же правильно? Например. какой код Java покажет текущий размер?
Использование числа, кратного 1024, неудивительно для размеров ОЗУ, поскольку ОЗУ обычно физически размещается путем удвоения аппаратных модулей. Но использование единиц четким и стандартным способом становится все более важным по мере того, как мы получаем все большие и большие мощности, поскольку растет вероятность путаницы. Единица «t» также принимается моей JVM, а 1 ТиБ на 10% больше, чем 1 ТБ.
Примечание: если это действительно двоичные числа, я предлагаю обновить документацию и пользовательские интерфейсы, чтобы четко указать на это, добавив такие примеры, как «Добавить букву k или K для обозначения кибибайт (1024 байта), или m или M для указать мегабайты (1048576 байт)". Такой подход используется, например, в Ubuntu: UnitsPolicy — Ubuntu Wiki.
Примечание. Подробнее о том, для чего используются параметры, см., например. java — каковы параметры Xms и Xmx при запуске JVM ?.