Erlang OTP: Distributed & Fault-Tolerant Systems Programming · Урок

Анализ памяти и настройка сборки мусора

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

Урок 4 из 413 шагов

«Анализ памяти и настройка сборки мусора» — бесплатный урок Erlang OTP: Distributed & Fault-Tolerant Systems Programming на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Erlang OTP: Distributed & Fault-Tolerant Systems Programming, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Erlang OTP: Distributed & Fault-Tolerant Systems Programming содержит 4 уроков всего.

Части этого урока еще не переведены и отображаются на английском.

Why Memory Matters

Erlang nodes can run for months. A small per-process leak or unbounded mailbox grows silently until the node is killed by the OS. Observability into memory is essential.

System-Wide Memory

erlang:memory/0 returns a breakdown: total, processes, atom, binary, ETS and more. Watch the categories that grow over time.

erlang:memory().

Per-Process Inspection

process_info/2 reveals a single process heap, message queue length and more — key for finding the culprit.

process_info(Pid, [memory, message_queue_len, heap_size]).

The Mailbox Trap

If a process receives faster than it handles, its mailbox grows without bound. A large message_queue_len is the classic sign of an overloaded consumer.

Binaries and Refc Leaks

Large binaries are reference-counted and shared off-heap. A process holding a tiny sub-binary can pin a huge parent binary. Watch the binary memory category closely.

Finding the Worst Offenders

Sort all processes by memory to find leaks fast.

lists:sort(fun({_,A},{_,B}) -> A > B end,
  [{P, element(2, process_info(P, memory))} || P <- processes()]).

How Erlang GC Works

Each process has its own private heap and is garbage-collected independently — there is no global stop-the-world pause. Collection runs when a process heap fills.

Triggering GC Manually

For a process you suspect is holding garbage, force a collection and re-measure.

erlang:garbage_collect(Pid),
process_info(Pid, memory).

Tuning the Heap

Spawn options like min_heap_size and fullsweep_after tune GC for hot processes, trading memory for fewer collections.

spawn_opt(fun work/0, [{min_heap_size, 1000}, {fullsweep_after, 10}]).

Hibernation

Idle processes can call hibernate to compact their heap to the minimum, freeing memory until the next message arrives — great for many mostly-idle connections.

proc_lib:hibernate(?MODULE, loop, [State]).

Watching ETS Tables

ETS tables live outside process heaps and do not shrink automatically. A growing ets memory category often means stale rows; periodically prune or use tables with a bounded size.

ets:info(my_table, memory).

Quick Check

Test your memory tuning knowledge.

Recap

You learned to analyze and tune memory:

  • erlang:memory/0 gives a system-wide breakdown
  • process_info/2 inspects per-process heap and mailbox
  • Growing mailboxes and pinned binaries are common leak sources
  • Each process is GC-ed independently; no global pause
  • Tune with spawn options and use hibernate for idle processes
Можно начать бесплатно

Изучай Erlang с ИИ-репетитором — бесплатно

Пиши и запускай код прямо в браузере, получай мгновенную помощь от ИИ-репетитора 24/7 и продолжи учиться на сайте или в приложении.

Курсы
12
Уроки
48

Часто задаваемые вопросы

Урок «Анализ памяти и настройка сборки мусора» бесплатный?

Да — полный текст урока «Анализ памяти и настройка сборки мусора» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Erlang OTP: Distributed & Fault-Tolerant Systems Programming, подпишись на CoddyKit PRO. Курс Erlang OTP: Distributed & Fault-Tolerant Systems Programming содержит 4 уроков всего.

Чему я научусь в уроке «Анализ памяти и настройка сборки мусора»?

Выявляйте рост потребления памяти, анализируйте кучи отдельных процессов и настраивайте сборку мусора Erlang, чтобы длительно работающие узлы оставались стабильными. Ты практикуешь Erlang OTP: Distributed & Fault-Tolerant Systems Programming с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Erlang OTP: Distributed & Fault-Tolerant Systems Programming?

Предыдущий опыт не требуется. Erlang OTP: Distributed & Fault-Tolerant Systems Programming на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.

Сколько времени занимает урок «Анализ памяти и настройка сборки мусора»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Erlang OTP: Distributed & Fault-Tolerant Systems Programming?

Да. Каждый урок Erlang OTP: Distributed & Fault-Tolerant Systems Programming включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Методы профилирования Erlang
  2. Трассировка и отладка распределённых систем
  3. Интеграция сбора метрик и мониторинга
  4. Анализ памяти и настройка сборки мусора
← Назад к Erlang OTP: Distributed & Fault-Tolerant Systems Programming