не забудьте родное пространство (стек)! Куча представляет только объекты, потоки / примитивы занимают дополнительную память. Кроме того, AFAIK, когда процесс занимает память, хотя содержимое может быть подвергнуто сборке мусора, иногда оно не возвращается обратно в ОС. Кроме того, я не уверен в VisualVM, но затмение MAT показывает только кучу, которая является «текущей» (не будет собирать мусор, если GC был запущен в тот момент). Вы также можете посмотреть на jstat.