Ограничение памяти Java -Xmx: верхний и нижний регистр m/M и g/G
Общеизвестно, что можно ограничить размер кучи Java с помощью -Xmx<amount><unit>
, где unit
- это единица количества данных, такая как Gigabyte, Megabyte и т.д.
Я знаю, что -Xmx128M
означает 128 Mebibytes (= 128 * 1024 * 1024 байта).
Но верно ли, что также можно использовать десятичные единицы, такие как мегабайты, используя -Xmx100m
(что будет 100 * 1000 * 1000 байтов)?
Таким образом, можно использовать эти десятичные единицы, используя суффикс суффикса, например k, m, g
вместо k, m, g
?
Ответы
Ответ 1
Нет никакой разницы между k и K как средствами kibibyte
, так и m/M = mebibyte
и g/G = gibibyte
. вы можете установить 100m
в качестве значения, и оно будет 100 * 1024 * 1024 bytes
. обычно рекомендуется использовать это значение в powers of 2.
Надеюсь, что это поможет.
Ответ 2
Почему бы вам просто не попробовать -Xmx100m
и -Xmx100m
и проверить, есть ли разница.
k, m, g
работают точно так же, как k, m, g
- все они означают двоичные единицы.
Ответ 3
Все размеры памяти, используемые аргументами командной строки JVM, указаны в двоичных единицах (Kibibyte, Mebibyte и т.д.) независимо от капитализации единицы; где "килобайт" - 1024 байта, а остальные увеличивают мощность 1024.
Этот ответ входит в более полный технический ответ на вопрос.