digital-garden/knowledge/dev/java/gc/Snapshot at the beginning (SATB).md

2.1 KiB
Raw Blame History

aliases tags date zero-link parents linked
SATB
зрелость/🌱
2023-11-08
../../../../garden/ru/meta/zero/00 Разработка

Его основное преимущество заключается в том, что он позволяет сборщику мусора работать параллельно с приложением, минимизируя паузы, необходимые для сбора мусора.

Вот как это работает:

  1. В начале фазы отметки сборщик мусора делает "снимок" кучи, отмечая все объекты, которые являются доступными на этот момент.
  2. Приложение продолжает работать и может создавать новые объекты или изменять ссылки на существующие объекты.
  3. Любые изменения, которые могут влиять на "снимок", записываются сборщиком мусора. Это включает в себя объекты, которые стали доступными после начала фазы отметки, и объекты, на которые больше не ссылаются.
  4. В конце фазы отметки сборщик мусора имеет полный список всех доступных объектов, включая те, которые были созданы или изменены во время фазы отметки.

Красим все старые ссылки в серый. Красим новые объекты в серый.

Работа с барьерами

Если Concurrent Collection не происходит, то ничего не происходит. Если происходит, то проваливаемся в следующую секцию