Механизм сборки мусора (Garbage Collector, GC) в JVM автоматически освобождает память, выделенную для объектов, которые больше не используются. 5
Процесс происходит в несколько этапов: 1
- Пометка объектов как живых. 1 GC (сборщик мусора) идентифицирует все живые объекты в памяти путём обхода графа объектов. 1 Когда GC посещает объект, то помечает его как доступный и, следовательно, живой. 1 Все объекты, недоступные из корней GC, рассматриваются как кандидаты на сбор мусора. 1
- Зачистка мёртвых объектов. 1 После фазы разметки пространство памяти занято либо живыми (посещёнными), либо мёртвыми (не посещёнными) объектами. 1 Фаза зачистки освобождает фрагменты памяти, которые содержат эти мёртвые объекты. 1
- Компактное расположение оставшихся объектов в памяти. 1 Мертвые объекты, которые были удалены во время предыдущей фазы, не обязательно находились рядом друг с другом. 1 Память можно уплотнить, когда сборщик мусора удалит мёртвые объекты. 1 Оставшиеся будут располагаться в непрерывном блоке в начале кучи. 1 Процесс уплотнения облегчает последовательное выделение памяти для новых объектов. 1
Объект считается «мусором», если на него нет активных ссылок. 2 Как только объект идентифицирован как недоступный, GC освобождает память, занимаемую этим объектом. 2 Это освобождает ресурсы и делает память доступной для новых объектов. 2