Оглавление:
Определение - Что означает сборщик мусора (GC)?
Сборка мусора (GC) - это динамический подход к автоматическому управлению памятью и выделению кучи, который обрабатывает и идентифицирует мертвые блоки памяти и перераспределяет хранилище для повторного использования. Основная цель сборки мусора - уменьшить утечки памяти.
Реализация GC требует трех основных подходов, а именно:
- Разметка и разметка - в процессе, когда память заканчивается, ГХ обнаруживает всю доступную память и затем освобождает доступную память.
- Подсчет ссылок - Выделенные объекты содержат количество ссылок на номер ссылки. Когда счетчик памяти равен нулю, объект становится мусором, а затем уничтожается. Освобожденная память возвращается в кучу памяти.
- Копировать коллекцию - Есть два раздела памяти. Если первый раздел заполнен, GC находит все доступные структуры данных и копирует их во второй раздел, сжимая память после процесса GC и предоставляя непрерывную свободную память.
Некоторые языки программирования и платформы со встроенным GC (например, Java, Lisp, C # и .Net) самостоятельно управляют утечками памяти, обеспечивая более эффективное программирование.
Техопедия объясняет сбор мусора (GC)
Динамический подход сборки мусора к автоматическому распределению кучи устраняет распространенные и дорогостоящие ошибки, которые часто приводят к реальным программным дефектам, когда их не обнаруживают.
Поскольку их трудно идентифицировать и исправить, ошибки распределения являются дорогостоящими. Таким образом, сборка мусора, как полагают многие, является важной языковой функцией, которая облегчает работу программиста с более низким ручным управлением распределением кучи. Однако GC не совершенен, и следует учитывать следующие недостатки:
- При освобождении памяти GC потребляет вычислительные ресурсы.
- Процесс GC непредсказуем, что приводит к разбросанным задержкам сеанса.
- Когда неиспользуемые ссылки на объекты не удаляются вручную, GC вызывает утечки логической памяти.
- GC не всегда знает, когда обрабатывать в среде виртуальной памяти современных настольных компьютеров.
- Процесс GC плохо взаимодействует с системами кеша и виртуальной памяти, что приводит к трудностям с настройкой производительности.
