Изучение аварийных дампов Erlang - как учесть всю память? - PullRequest
3 голосов
/ 07 июля 2011

Я просматривал этот аварийный дамп в Erlang, где у виртуальной машины не хватило кучи памяти.Проблема в том, что нет очевидного виновника, выделяющего всю эту память.

Используя некоторую серьезную черную awk магию, я суммировал поля Stack+heap, OldHeap, Heap unused и OldHeap unusedдля каждого процесса и ранжировать их по использованию памяти.Проблема в том, что это число даже близко не совпадает с числом, представляющим общую память для всех процессов processes_used согласно Руководству по аварийному дампу Erlang .

I 'мы уже попробовали Crashdump Viewer и либо я что-то упустил, либо мне не очень помогли в решении моей проблемы.

Полученное число составляет 525 МБ, тогда как processes_used значение составляет 1348 МБ.Где я могу найти остальную часть памяти?

Редактировать: Heap unused и OldHeap unused не должны были быть включены, так как они являются частью Stack+Heap и OldHeap, что плюспроблема заключалась в том, что число, отображаемое для Stack+Heap и OldHeap, указывалось как количество слов, а не байтов.

1 Ответ

6 голосов
/ 08 июля 2011

Существует модуль под названием crashdump_viewer , который отлично подходит для такого рода анализа.

Еще одна вещь, которую нужно иметь в виду, это то, что Heap + Stack - это слова, а не байты, которые означают, что вам нужно умножить Heap + Stack на 4 на 32 и 8 на 64 бит.Не могу найти ссылку в руководстве для этого, но Процессы немного говорит об этом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...