Ответ 1
Из Java Doc MemoryUsage
,
getUsed:
количество использованной памяти в байтах
getCommitted()
Возвращает объем памяти в байтах, который передается для Java виртуальную машину для использования. Этот объем памяти гарантирован Использовать виртуальную машину Java.
getMax()
Возвращает максимальный объем памяти в байтах, который может использоваться для управление памятью. Этот метод возвращает -1, если максимальный размер памяти undefined.
Этот объем памяти не гарантированно доступен для памяти если он больше, чем объем памяти. Виртуальная машина Java может не выделять память, даже если количество используемая память не превышает этот максимальный размер.