Java Heap Space - Как именно -Xmx работает?

Я столкнулся с печально известным OutOfMemoryException в моем приложении, и вместо того, чтобы просто увеличить количество Доступное пространство кучи Я попытался разобраться, в чем проблема, на всякий случай, из моего приложения произошла какая-то утечка.

Я добавил параметр JVM -XX: + HeapDumpOnOutOfMemoryError , который создает дамп кучи при обнаружении ошибки OutOfMemory. Затем я проанализировал файл дампа, созданный с помощью различных инструментов профилирования. Затем я начал экспериментировать с параметром -Xmx и наблюдать закономерности.

Меня озадачило следующее. Почему при анализе дампа я обнаружил, что общий размер всех объектов намного меньше, чем тот, который я установил с помощью параметра -Xmx? Например, скажем, я установил -Xmx на «2048 м». Когда я проанализировал файл дампа, я обнаружил в куче всего 400 МБ объектов. Я ожидал найти 2Гб. Я что-то пропустил?

8
задан Kros 24 August 2011 в 16:07
поделиться