Предел памяти Java-суффикс Xmx: верхний vs нижний регистр m / M и g / G

известно, что можно ограничить размер кучи Java с -Xmx<amount><unit>, где unit - это единица измерения количества данных, такая как гигабайт, мегабайт и т. д. Я знаю это -Xmx128M означает 128 Мебибайт (= 128 * 1024 * 1024 байт).

но правда ли, что также можно использовать десятичные единицы, такие как мегабайты, используя -Xmx100m (что бы 100 * 1000 * 1000 байт)?

так можно ли использовать эти десятичные единицы, используя строчные суффиксы, такие как k, m, g вместо K, M, G?

3 ответов


нет никакой разницы между k и K оба означает kibibyte и M / M = mebibyte & g / G = gibibyte. вы можете установить 100m как значение, и это будет 100 * 1024 * 1024 bytes. в общем рекомендуется использовать это значение в powers of 2.

надеюсь, что это помогает.


Почему бы вам просто не попробовать -Xmx100m и -Xmx100M и проверьте, есть ли какая-либо разница.
k, m, g работают точно так же, как K, M, G - все они означают двоичные единицы.


все размеры памяти, используемые аргументами командной строки JVM, указаны в двоичных единицах (Kibibyte,Mebibyte и т. д.) независимо от капитализации единицы; где "килобайт" составляет 1024 байта, а другие увеличивают мощности 1024.

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