Я ожидал, что Runtime.maxMemory() вернет точно -Xmx, но вернет более низкое значение. Итак, что он возвращает?
Runtime.maxMemory() и -Xmx
Ответ 1
Интерпретация флага -Xmx зависит от VM. Некоторые виртуальные машины, включая HotSpot, применять нижнюю границу эффективной стоимости этот вариант. Предложение CCC не должно упоминать флаг -Xmx таким образом.
Ответ 2
Возвращает максимальный объем памяти, который виртуальная машина Java будет пытаться использовать, jvm не может использовать всю память, которую вы определили как параметр -Xmx
для просто кучи.
Ответ 3
Укажите максимальный размер пула распределения памяти в байтах. Это значение должно быть кратно 1024 больше, чем 2 МБ. Добавить письмо k или K, чтобы указать килобайты, или m или M, чтобы указать мегабайты. значение по умолчанию - 64 МБ. Верхний предел для этого значения будет около 4000 м на платформах Solaris 7 и Solaris 8 SPARC и 2000 м на платформах Solaris 2.6 и x86, минус накладные расходы. Примеры:
-Xmx83886080 -Xmx81920k -Xmx80m
Возвращает максимальный объем памяти, который виртуальная машина Java будет пытаться использовать. Если нет присущего предела, тогда значение Long.MAX_VALUE будет возвращен.