Размер кучи Java: зачем использовать степень двойки?

Чаще всего, когда я вижу примеры установки размера кучи Java с использованием параметров JVM -Xms и -xmx, люди используют степень двойки:

128m, 512m, 1024m, etc.

Есть ли на самом деле причина для этого? Это как-то полезно для производительности JVM? Или это делается просто потому, что программистам нравятся степени двойки? (Или потому, что значение по умолчанию равно 64 м?)

P.S. Конечно, я знаю, что вы можете использовать практически любое число (-Xmx666). Но люди склонны использовать степень двойки.


person fgysin    schedule 31.07.2014    source источник
comment
Просто привычки, когда эти размеры имели значение...   -  person Denys Séguret    schedule 31.07.2014
comment
См. stackoverflow.com/questions/11465609/jvm-heap-setting-pattern   -  person Davz    schedule 31.07.2014
comment
В этом мире есть 10 типов людей, те, кто понимает бинарность, и те, кто нет!!! :п   -  person Not a bug    schedule 31.07.2014


Ответы (2)


Я не могу сказать, почему другие люди делают это, но для меня это а) соглашение давать размеры ОЗУ в степени двойки, поскольку модули памяти используют это, и б) я знаю все степени двойки до 65536 из памяти, так что это никаких дополнительных усилий для этого.

Но с точки зрения ОС/памяти использование степеней двойки для выделения мегабайтов не имеет никакого значения. Если бы мы говорили о меньших размерах (например, 511 или 512 байт), то подсистема управления памятью ОС округлила бы эти значения. Но нет обхода ОС по мегабайтам.

person Aaron Digulla    schedule 31.07.2014

Нет, вы можете использовать любое значение. Не нужно быть силой 2.

Eg:

 -Xms4043m -Xmx8303m
person Ruchira Gayan Ranaweera    schedule 31.07.2014