Дамп памяти намного меньше доступной памяти
У меня есть сервер приложений Tomcat, настроенный для создания дампа памяти в OOM, и он запускается с -Xmx1024M, поэтому ему должен быть доступен гигабайт.
Теперь я нашел один такой дамп, и он содержит только 260 МБ неиспользованной памяти. Как это возможно, что дамп намного меньше, чем размер, который он должен иметь в наличии?
2 ответа
Пространство Permgen управляется независимо от кучи и может исчерпаться, даже если в целом достаточно свободной памяти. Некоторые веб-фреймворки (особенно JSF) являются настоящими боровами и в то же время легко приводят к завершению конфигурации по умолчанию. Его можно увеличить с помощью -XX:MaxPermSize=###m
Помните, что системное пространство ограничено суммой кучи и permgen, поэтому вы можете использовать меньше общих ресурсов, прежде чем начнете получать исключение Cannot Create Native Thread OOM, если вы не уменьшите кучу на величину увеличения PermGen.
Только информация об использовании выделенной памяти будет записана в файл. Дамп кучи не является двоичным изображением вашей кучи, он содержит информацию о типах данных и т. Д. И может превышать объем доступной памяти.