И вообще, являются ли единицы, используемые для опций -Xmx
, -Xms
и -Xmn
(«k», «M» и «G» или менее стандартные возможности «K», «m» или «g») Binary prefix кратность (т. е. мощности 1024), или они обладают мощностью 1000?Имеет ли java -Xmx1G 10^9 или 2^30 байт?
В руководствах указывается, что они представляют килобайты (кБ), мегабайты (МБ) и гигабайты (ГБ), предполагая, что они имеют мощность 1000, как определено в исходной системе SI. Мои неофициальные тесты (что я не очень уверен в этом) предлагают, чтобы они действительно были kibibytes (kiB), mebibytes (MiB) и gibibytes (GiB), все мощности 1024.
Так что это правильно? Например. какой Java-код будет показывать текущий размер?
Использование кратных 1024 не удивительно для размеров ОЗУ, поскольку оперативная память обычно физически выкладывается путем удвоения аппаратных модулей. Но использование единиц четким и стандартным образом становится все более важным, поскольку мы достигаем больших и больших полномочий, поскольку потенциал для путаницы растет. Единица «t» также принимается моей JVM, а 1 TiB на 10% больше, чем 1 ТБ.
Примечание: если они действительно являются двоичными кратными, я предлагаю обновить документацию и пользовательские интерфейсы, чтобы быть предельно ясными относительно этого, с примерами, такими как «. Добавить букву k или K, чтобы указать кибиты (1024 байта) или m или M, чтобы указать mebibytes (1048576 bytes) ". Это подход, принятый, например, в Ubuntu: UnitsPolicy - Ubuntu Wiki.
Примечание: для получения дополнительной информации о том, какие параметры используются, см., Например, java - What are the Xms and Xmx parameters when starting JVMs?.
@ElliottFrisch В основном я задаю вопрос, ища окончательный ответ. Предложение документации просто предназначено для большей ясности в отношении того, с чем я запутался. – nealmcb