Общий объем памяти, используемый процессом Java, и размер кучи - PullRequest
13 голосов
/ 26 октября 2011

Я написал приложение, используя Spring Batch.Я вижу с VisualVM, что размер кучи составляет около 22 МБ.Но когда я использую Process Explorer (в Windows), чтобы увидеть, сколько памяти используется им, разница велика (частные байты - 71560K и рабочий набор - 80388K).Как это объяснить?Какие еще вещи используют эту память?

Спасибо

Ответы [ 2 ]

5 голосов
/ 26 октября 2011

Имеются общие библиотеки, стек потоков, perm gen, прямая память, файлы, отображенные в память.

Однако JVM выделяет максимальный размер кучи при запуске.Используемое количество не имеет большого значения.

2 голосов
/ 26 октября 2011

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

...