digital-garden/knowledge/dev/java/gc/Shenandoah GC.md
2024-06-13 21:01:37 +03:00

44 lines
2.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
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)