Сброс памяти намного меньше доступной памяти

67
6

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


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

спросил(а) 2010-05-11T08:24:00+04:00 10 лет, 1 месяц назад
1
Решение
66

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

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

ответил(а) 2010-05-14T18:49:00+04:00 10 лет, 1 месяц назад
67

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

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

ответил(а) 2010-05-11T08:40:00+04:00 10 лет, 1 месяц назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема