Ограничение памяти 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.

Этот ответ входит в более полный технический ответ на вопрос.