32 lines
2.1 KiB
Markdown
32 lines
2.1 KiB
Markdown
|
---
|
|||
|
aliases:
|
|||
|
- SATB
|
|||
|
tags:
|
|||
|
- зрелость/🌱
|
|||
|
date: "[[2023-11-08]]"
|
|||
|
zero-link:
|
|||
|
- "[[00 Разработка]]"
|
|||
|
parents:
|
|||
|
linked:
|
|||
|
---
|
|||
|
Его основное преимущество заключается в том, что он позволяет сборщику мусора работать параллельно с приложением, минимизируя паузы, необходимые для сбора мусора.
|
|||
|
|
|||
|
Вот как это работает:
|
|||
|
1. В начале фазы отметки сборщик мусора делает "снимок" кучи, отмечая все объекты, которые являются доступными на этот момент.
|
|||
|
2. Приложение продолжает работать и может создавать новые объекты или изменять ссылки на существующие объекты.
|
|||
|
3. Любые изменения, которые могут влиять на "снимок", записываются сборщиком мусора. Это включает в себя объекты, которые стали доступными после начала фазы отметки, и объекты, на которые больше не ссылаются.
|
|||
|
4. В конце фазы отметки сборщик мусора имеет полный список всех доступных объектов, включая те, которые были созданы или изменены во время фазы отметки.
|
|||
|
|
|||
|
![](Pasted%20image%2020231108154006.png)
|
|||
|
|
|||
|
Красим все старые ссылки в серый. Красим новые объекты в серый.
|
|||
|
|
|||
|
## Работа с [барьерами](Барьеры%20в%20программировании.md)
|
|||
|
![](Pasted%20image%2020231108154240.png)
|
|||
|
|
|||
|
Если [Concurrent Collection](Concurrent%20Collection.md) не происходит, то ничего не происходит. Если происходит, то проваливаемся в следующую секцию
|
|||
|
|
|||
|
![](Pasted%20image%2020231108154403.png)
|
|||
|
|
|||
|
|