Перейти к основному содержимому

О разделе

Автоматическое управление памятью — это процесс, при котором среда выполнения (например, виртуальная машина или интерпретатор) самостоятельно берет на себя распределение и освобождение памяти в куче для объектов программы, снижая риск утечек и ошибок при программировании.

И основной механизм - это сборка мусора, фоновый процесс, который периодически сканирует память, идентифицирует объекты, на которые больше нет ссылок в коде, и освобождает занимаемое ими место. Этот подход используется в таких языках, как Java, JavaScript, C# и Python

Ещё одно важное понятие - это подсчёт ссылок (Reference Counting), механизм, при котором каждый объект хранит количество ссылок на него. Когда счетчик достигает нуля, память удаляется немедленно.

В низкоуровневых языках (например, C или C++) разработчикам приходится осуществлять управление вручную, выделяя и очищая память командами вроде malloc и free. Современные альтернативные подходы, такие как система владения (Ownership) в Rust, позволяют избежать недостатков обоих подходов, обеспечивая безопасность без использования классической сборки мусора.

Раздел про автоматическое управление памятью — достижимость объектов, поколения, паузы stop-the-world и типичные "утечки" через живые ссылки.

Длинные листинги (от ~8 строк) вынесены в каталог code.spirzen.ru и подгружаются через ExternalCodeEmbed; короткие фрагменты и псевдокод mark-and-sweep остаются в статье. Интерактив mark-and-sweep — в play.spirzen.ru (ExternalPlayEmbed в статье 1).

СтатьяСодержание
1. Автоматическое управление памятьюТеория, утечки, C#, Java, Python; интерактив mark-and-sweep
4. Java, Python и GoСравнение трёх моделей GC — шпаргалка
2. Итоги · 3. Чек-листЗакрепление

Языковые детали — в JVM (Java), CPython, Go runtime.