Сборщик мусора (Garbage Collector, GC) в Ruby — это автоматизированный механизм управления памятью. Он освобождает память, занятую объектами, которые больше не используются в программе. Это позволяет разработчику не заниматься ручным управлением памятью (выделением и освобождением), снижая вероятность утечек памяти и ошибок.
Основные принципы работы Ruby GC:
-
Маркировка и сборка (Mark and Sweep):
- Маркировка: GC определяет, какие объекты доступны из активных частей программы (например, из локальных или глобальных переменных). Эти объекты помечаются как "живые".
- Сборка: После маркировки GC проходит по всей куче (области памяти, где хранятся объекты) и освобождает память, занятую объектами, которые не были помечены как "живые".
-
Генерационное поколение (Generational):
- Объекты делятся на "поколения" в зависимости от их "возраста". Новые объекты относятся к "молодым" поколениям, старые — к "старым".
- Предполагается, что молодые объекты скорее станут недоступными, чем старые.
Сборщик мусора (Garbage Collector, GC) в Ruby — это автоматизированный механизм управления памятью. Он освобождает память, занятую объектами, которые больше не используются в программе. Это позволяет разработчику не заниматься ручным управлением памятью (выделением и освобождением), снижая вероятность утечек памяти и ошибок.
Основные принципы работы Ruby GC:
-
Маркировка и сборка (Mark and Sweep):
- Маркировка: GC определяет, какие объекты доступны из активных частей программы (например, из локальных или глобальных переменных). Эти объекты помечаются как "живые".
- Сборка: После маркировки GC проходит по всей куче (области памяти, где хранятся объекты) и освобождает память, занятую объектами, которые не были помечены как "живые".
-
Генерационное поколение (Generational):
- Объекты делятся на "поколения" в зависимости от их "возраста". Новые объекты относятся к "молодым" поколениям, старые — к "старым".
- Предполагается, что молодые объекты скорее станут недоступными, чем старые.