И вообще, это единицы, используемые для опций -Xmx
, -Xms
и -Xmn
( "k", "M" и "G" или менее стандартных возможностей "K", "m", или "g" ) Двоичный префикс (например, мощности 1024) или значения 1000?
В руководствах говорится, что они представляют килобайты (кБ), мегабайты (МБ) и гигабайты (ГБ), предполагая, что они обладают мощностью 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 - Каковы параметры Xms и Xmx при запуске JVM?.