Дамп памяти намного меньше доступной памяти - PullRequest
2 голосов
/ 11 мая 2010

У меня есть сервер приложений Tomcat, настроенный для создания дампа памяти в OOM, и он запускается с -Xmx1024M, поэтому ему должен быть доступен гигабайт.

Теперь я нашел один такой дамп, и он содержит только 260 МБ нераспределенной памяти. Как это возможно, что дамп намного меньше, чем размер, который он должен иметь в наличии?

Ответы [ 2 ]

2 голосов
/ 14 мая 2010

Пространство Permgen управляется независимо от кучи и может исчерпаться, даже если в целом достаточно свободной памяти. Некоторые веб-фреймворки (особенно JSF) являются настоящими боровами и в то же время легко приводят к завершению конфигурации по умолчанию. Его можно увеличить с помощью -XX: MaxPermSize = ### m

Помните, что системное пространство ограничено суммой кучи и permgen, поэтому вы можете использовать меньше общих ресурсов, прежде чем начнете получать исключение OOM Cannot Create Native Thread, если не уменьшите кучу на величину увеличения PermGen. 1003 *

2 голосов
/ 11 мая 2010

В файл будет выгружена только информация об использовании выделенной памяти. Дамп кучи не является двоичным изображением вашей кучи, он содержит информацию о типах данных и т. Д. И может превышать доступную память.

Текстовый (классический) формат файла Heapdump

...