Runtime.maxMemory() и -Xmx

Я ожидал, что Runtime.maxMemory() вернет точно -Xmx, но вернет более низкое значение. Итак, что он возвращает?

Ответ 1

Интерпретация флага -Xmx зависит от VM. Некоторые виртуальные машины, включая HotSpot, применять нижнюю границу эффективной стоимости этот вариант. Предложение CCC не должно упоминать флаг -Xmx таким образом.

Ссылка

Ответ 2

Возвращает максимальный объем памяти, который виртуальная машина Java будет пытаться использовать, jvm не может использовать всю память, которую вы определили как параметр -Xmx для просто кучи.

Ответ 3

- Xmxn

Укажите максимальный размер пула распределения памяти в байтах. Это значение должно быть кратно 1024 больше, чем 2 МБ. Добавить письмо k или K, чтобы указать килобайты, или m или M, чтобы указать мегабайты. значение по умолчанию - 64 МБ. Верхний предел для этого значения будет около 4000 м на платформах Solaris 7 и Solaris 8 SPARC и 2000 м на платформах Solaris 2.6 и x86, минус накладные расходы. Примеры:

       -Xmx83886080
       -Xmx81920k
       -Xmx80m

maxMemory()

Возвращает максимальный объем памяти, который виртуальная машина Java будет пытаться использовать. Если нет присущего предела, тогда значение Long.MAX_VALUE будет возвращен.