Generational ZGC в Java 21: объяснение | G1GC vs ZGC vs Generational ZGC (анализ JFR)
LearningFromExperience
0:00 / 0:00
Generational ZGC в Java 21: объяснение | G1GC vs ZGC vs Generational ZGC (анализ JFR)
226 просмотров · 2 месяца назад
LearningFromExperience
4,24 тыс. подписчиков
226 просмотров · 2 месяца назад
Генерационная сборка мусора (ZGC) меняет подход ZGC к обработке кратковременных и долгоживущих объектов — но чем она отличается от G1GC и классической ZGC?
В этом подробном обзоре Java 21 мы сначала создадим концептуальную модель, лежащую в основе генерационной ZGC. Затем мы запустим одну и ту же рабочую нагрузку Spring Boot для розничной торговли, используя G1GC, негенерационную ZGC и генерационную ZGC.
Вы увидите, чем отличаются сборщики мусора по архитектуре, активности сборщика мусора, поведению при паузах, обработке выделения памяти и их влиянию на работающее приложение.
Что вы узнаете:
• Что такое ZGC с генерацией поколений и почему он был введен
• Поведение объектов молодого и старого поколений
• Ограничения первоначальной конструкции ZGC с одной генерацией
• G1GC против ZGC без генерации против ZGC с генерацией поколений
• Как имитировать давление выделения памяти при реалистичной рабочей нагрузке розничной торговли
• Как читать и интерпретировать журналы сборщика мусора
• Как анализировать данные Java Flight Recorder с помощью JDK Mission Control
• Почему большее количество событий сборщика мусора не означает автоматически худшую производительность приложения
• Как задержка, пропускная способность, размер кучи и поведение рабочей нагрузки влияют на выбор сборщика мусора
📋 Разделы:
0:00 Введение и что такое ZGC с генерацией поколений
1:37 Обзор эксперимента — 3 сборщика мусора, 2 размера кучи
3:30 Ключевые понятия: паузы сборщика мусора, задержки выделения памяти, циклы сборщика мусора
7:52 Структура кучи: молодое поколение, старое поколение и гипотеза о генерации
12:33 Как работает ZGC: маркировка и Фазы перемещения памяти
16:08 Что изменилось в Java 21: ZGC с поколенческим распределением памяти
18:55 Сравнение трех сборщиков мусора
21:15 Объяснение флагов JVM
22:30 RetailMemoryStress.java — разбор кода
27:15 Запуск эксперимента (Фаза 1: куча 1 ГБ)
30:45 Анализ логов сборщика мусора 1 ГБ и результатов JFR
35:15 Сводка результатов для 1 ГБ и гистограмма
37:30 Запуск Фазы 2: куча 512 МБ
38:45 Анализ логов сборщика мусора 512 МБ и результатов JFR
42:20 Результаты для 512 МБ: сравнение задержек при выделении памяти
43:30 Заключительное резюме и выводы
Параметры JVM, использованные в демонстрации:
G1GC:
-XX:+UseG1GC
ZGC без поколенческого распределения памяти:
-XX:+UseZGC -XX:-ZGenerational
Generational ZGC:
-XX:+UseZGC -XX:+ZGenerational
🎓 Углубленный анализ возможностей Java 21: виртуальные потоки и Spring Boot
https://www.udemy.com/course/java-21-...
💻 Исходный код
https://github.com/j2eeexpert2015/jav...
📚 Изучите все курсы
https://j2eeexpert2015.github.io/lear...
#Java21 #ZGC #JVMPerformance