digital-garden/knowledge/dev/java/gc/Parallel GC.md

39 lines
2.2 KiB
Markdown
Raw Normal View History

2024-06-13 21:01:37 +03:00
---
aliases:
tags:
- зрелость/🌱
date: "[[2023-11-06]]"
zero-link:
- "[[00 Java разработка]]"
parents:
- "[[Garbage Collector]]"
linked:
- "[[Serial GC]]"
- "[[Concurrent Mark Sweep|Concurrent Mark Sweep]]"
---
Работает по тем же принципам, что и сборщик мусора [Scavenge](Serial%20GC.md), используя [Generational Collection](Generational%20Collection.md). Для молодого поколения используется [Copy Collector](Copy%20Collector.md), а для старого [Mark and Compact](Mark%20and%20Compact.md).
Отличие Parallel коллектора от [Serial](Serial%20GC.md) заключается в том, что он использует подход [Parallel Collection](Parallel%20Collection.md), то есть работает в несколько потоков во время [StopTheWorld](StopTheWorld.md).
Зеленые линии это потоки приложения, красные это потоки GC.
![](Pasted%20image%2020231107215457.png)
Также у этого коллектора есть возможность автоматической подстройки под требуемые параметры производительности и меньшие паузы на время сборок.
**Минусы:**
- Активное использование [StopTheWorld](StopTheWorld.md). Однако паузы уменьшаются за счет [Parallel Collection](Parallel%20Collection.md).
**Плюсы:**
- Малое потребление CPU на фоновую сборку мусора: 1%.
- Параллельная сборка молодого и старого поколения.
- Линейная [аллокация](Аллокация.md) объектов. Благодаря использованию [Mark and Compact](Mark%20and%20Compact.md).
**Где использовать:**
- Приложения для которых важна производительность.
- Железо с несколькими ядрами.
**Как включить:**
- `-XX:+UseParallelGC`
- `-XX:+UseParallelOldGC`