Первый взгляд на механизм сборки мусора в .NET C# (2)
Posted: Sat Jan 18, 2025 6:35 am
В предыдущей статье мы в основном кратко представили механизм секционирования памяти и сборки мусора C#. В этой статье мы покажем, как алгоритм Mark-Sweep достигает цели очистки памяти.
Любой алгоритм сбора мусора должен состоять из двух частей:
Должен иметь возможность искать объекты, не имеющие соответствующих ссылок.
Должна быть предусмотрена возможность переработки мусорных объектов, занимающих место.
Алгоритм маркировки и очистки не является исключением. В этом база данных номеров whatsapp в финляндии алгоритме первая часть называется фазой маркировки, которая проходит по всем опорным объектам и отмечает, какие из них все еще используются, а какие нет, вторая часть называется фазой очистки. который удален на предыдущем шаге. Отметьте объекты как неиспользуемые, чтобы освободить место в памяти.
1. Отметьте фазу
Предположим, что все объекты в области хранения кучи подлежат вторичной переработке. Когда объект создается, он сначала помечается как ложный. При входе в фазу сбора мусора в качестве отправной точки будет использоваться Root с использованием алгоритма поиска в глубину. (Поиск в глубину) выполняет патрулирование всех объектов и помечает объекты, которые можно искать во время процесса, как истинные. Корень — это ссылка на объект, и к нему могут напрямую обращаться локальные переменные. В обычных обстоятельствах мы обычно предполагаем, что для одного и того же полного набора изображений существует только один корень. Корневой список механизма сборки мусора в .NET поддерживается и управляется JIT-компилятором и средой выполнения. Во время сборки мусора все корни в этом списке будут просматриваться и помечаться.
Любой алгоритм сбора мусора должен состоять из двух частей:
Должен иметь возможность искать объекты, не имеющие соответствующих ссылок.
Должна быть предусмотрена возможность переработки мусорных объектов, занимающих место.
Алгоритм маркировки и очистки не является исключением. В этом база данных номеров whatsapp в финляндии алгоритме первая часть называется фазой маркировки, которая проходит по всем опорным объектам и отмечает, какие из них все еще используются, а какие нет, вторая часть называется фазой очистки. который удален на предыдущем шаге. Отметьте объекты как неиспользуемые, чтобы освободить место в памяти.
1. Отметьте фазу
Предположим, что все объекты в области хранения кучи подлежат вторичной переработке. Когда объект создается, он сначала помечается как ложный. При входе в фазу сбора мусора в качестве отправной точки будет использоваться Root с использованием алгоритма поиска в глубину. (Поиск в глубину) выполняет патрулирование всех объектов и помечает объекты, которые можно искать во время процесса, как истинные. Корень — это ссылка на объект, и к нему могут напрямую обращаться локальные переменные. В обычных обстоятельствах мы обычно предполагаем, что для одного и того же полного набора изображений существует только один корень. Корневой список механизма сборки мусора в .NET поддерживается и управляется JIT-компилятором и средой выполнения. Во время сборки мусора все корни в этом списке будут просматриваться и помечаться.