Как рассчитать размер процесса Эрланга в памяти? - PullRequest
3 голосов
/ 23 сентября 2011

У меня есть «рабочий» процесс, который я собираюсь назначить на работу. Прежде чем создавать сотни процессов такого типа, я бы хотел узнать цифры потребления памяти для него.

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

Как я понимаю, прежде чем делать это, я должен знать фактический размер самого {tuple | atom | list | process}.

Учитывая определенную структуру данных, которая хранится в памяти процесса, как я могу рассчитать общий размер процесса в памяти?

Ответы [ 2 ]

12 голосов
/ 23 сентября 2011

erlang:process_info/2 даст вам объем памяти, в байтах, который занимает процесс.Например:

1> erlang:process_info(whereis(code_server), memory).
{memory,284208}

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

1 голос
/ 23 сентября 2011
...