Подтвердить что ты не робот

Разница в используемой, совершенной и максимальной памяти кучи

Я наблюдаю за JVM-исполнителем искры OutOfMemoryException. Я использовал Jconsole для подключения к JVM-исполнителю. Ниже приведен снимок Jconsole: введите описание изображения здесь

В изображении используемая память отображается как 3.8G, а зафиксированная память - 8.6G, а максимальная память - 8.6G Может ли кто-нибудь объяснить разницу между Использованной и Committed Memory или любой ссылкой, которая объясняет это.

4b9b3361

Ответ 1

Из Java Doc MemoryUsage,

getUsed:

количество использованной памяти в байтах

getCommitted()

Возвращает объем памяти в байтах, который передается для Java виртуальную машину для использования. Этот объем памяти гарантирован Использовать виртуальную машину Java.

getMax()

Возвращает максимальный объем памяти в байтах, который может использоваться для управление памятью. Этот метод возвращает -1, если максимальный размер памяти undefined.

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