44 lines
2.5 KiB
Markdown
44 lines
2.5 KiB
Markdown
---
|
||
aliases:
|
||
tags:
|
||
- зрелость/🌱
|
||
date: "[[2023-11-08]]"
|
||
zero-link:
|
||
- "[[00 Java разработка]]"
|
||
parents:
|
||
- "[[Garbage Collector]]"
|
||
linked:
|
||
- "[[ZGC]]"
|
||
---
|
||
Входит в состав OpenJDK начиная с [[Java 12]], но есть порты сборщика в [Java 11](Java%2011).
|
||
|
||
Похож на [G1](Garbage%20First.md):
|
||
- Также использует с разбиением на регионы
|
||
- Политика сборки: в первую очередь собирает регионы с большим количеством мусора
|
||
|
||
Не похож на [G1](Garbage%20First.md):
|
||
- Отсутствует деление на молодые/старые сборки
|
||
- Учетом ссылок между регионами. Используется Matrix.
|
||
|
||
- Требует [барьеры на запись](Барьеры%20в%20программировании.md) на всех записях. Но на практике эти барьеры срабатывают редко, только во время эвакуации, на редких эвакуируемых объектах, в момент когда они еще не были перемещены.
|
||
|
||
## Алгоритм работы
|
||
![](Pasted%20image%2020231108141041.png)
|
||
- [Concurrent Mark](Concurrent%20Collection.md) начинается с маленькой паузы [StopTheWorld](StopTheWorld.md).
|
||
- Final Mark еще одна небольшая пауза [StopTheWorld](StopTheWorld.md)
|
||
- В это время выбираются регионы с максимальным количеством мусора.
|
||
- [Concurrent Evacuation](Concurrent%20Collection.md)
|
||
- Ключевое отличие от [G1](Garbage%20First.md). G1 использует [StopTheWorld](StopTheWorld.md). В этом месте.
|
||
|
||
На самом деле есть еще 2 коротенькие паузы.
|
||
![](Pasted%20image%2020231112162050.png)
|
||
|
||
Также
|
||
|
||
**Плюсы:**
|
||
- Относится к ultra-low latency GC. Паузы около 1 ms.
|
||
- Продолжительность сборки не зависят от размера хипа и количества живых объектов
|
||
|
||
## Дополнительный материал
|
||
- [Алексей Шипилёв — Shenandoah: сборщик мусора, который смог - YouTube](https://www.youtube.com/watch?v=ZYiQCHxgABI)
|
||
- [Алексей Шипилёв — Shenandoah: сборщик мусора, который смог (часть 2) - YouTube](https://www.youtube.com/watch?v=HBWaffsl7fo) |