Выделение памяти между анализатором памяти и диспетчером задач

Я хочу проанализировать использование памяти довольно огромного процесса Java VM.

Когда я запустил инструмент Eclipse Memory Analysis, я понял одну вещь - огромное расхождение между предполагаемой выделенной памятью: Windows Task Manager / CMD Tasklist показывает около 5,5 ГБ, в то время как анализатор памяти показывает только 1,1 ГБ. Что вызывает эту разницу?

1 ответ

Решение

Eclipse Memory Analyzer (MAT) видит и сообщает о размере кучи Java, то есть графе объектов, который состоит из Object экземпляров. Операционная система видит и сообщает о размере области в ОЗУ, которую JVM запросила у ОС для хранения кучи Java (и ее внутренних структур данных). Эта память обычно не полностью заполнена живыми объектами Java; некоторые объекты могут быть уже мертвы (и не видны как MAT), но они еще не собраны, и самому сборщику мусора также требуется некоторое пространство для перемещения объектов.

Я надеюсь, что это объясняет основы (есть намного больше деталей для управления памятью как JVM, так и OS).

Другие вопросы по тегам