Weitere ähnliche Inhalte
Mehr von Vladimir Ivanov (7)
G1 GC: Garbage-First Garbage Collector
- 1. India
3–4 May 2012
San Francisco
September 30–October 4, 2012
1 Copyright © 2012, Oracle and/or its affiliates. All rights Insert Informaion Protection Policy Classification from Slide 7
reserved.
- 2. G1GC: Garbage-First Garbage Collector
Владимир Иванов
Oracle Corporation
2 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
vladimir.x.ivanov@oracle.com
- 3. Содержание
• Основы сборки мусора
• G1: обзор архитектуры
• Миграция на G1
3 Copyright © 2012, Oracle and/or its affiliates. All rights Insert Informaion Protection Policy Classification from Slide 7
reserved.
- 4. GC == Сборка мусора
• Находит и освобождает место, занимаемое
ненужными объектами
– Объекты вне транзитивного замыкания, включающего roots
(стеки потоков, статические поля классов и т.д.)
• Автоматическая и безопасная
• Проще, если граф объектов “заморожен”
– Stop-the-world (STW) паузы
• Возможны различные подходы
– c дефрагментацией или без
– Алгоритмы: copying, mark-sweep, mark-compact, ...
– Аллокация: linear, free lists, ...
4 Copyright © 2012, Oracle and/or its affiliates. All rights Insert Informaion Protection Policy Classification from Slide 7
reserved.
- 5. Сборка мусора: до
Runtime Heap
Stack
A C G K
D H
B E I L
F J M
5 Copyright © 2012, Oracle and/or its affiliates. All rights Insert Informaion Protection Policy Classification from Slide 7
reserved.
- 6. Сборка мусора: после
Runtime Heap
Stack
A C G K
D H
B E I L
F J M
6 Copyright © 2012, Oracle and/or its affiliates. All rights Insert Informaion Protection Policy Classification from Slide 7
reserved.
- 7. Сборка мусора с поколениями
• Слабая гипотеза о поколениях
– Большинство объектов временные
– Старые объекты редко ссылаются на молодые
• Молодые и старые объекты содержатся отдельно
– В пространствах, называемых “поколения” (generations)
– Возможны разные алгоритмы для молодого и старого
поколения
– Mолодое поколение можно собирать отдельно от старого
7 Copyright © 2012, Oracle and/or its affiliates. All rights Insert Informaion Protection Policy Classification from Slide 7
reserved.
- 8. Сборка мусора с поколениями
Создание объекта
Необходимо
отслеживать ссылки
Молодое поколение
Перемещение объекта
Старшее поколение
8 Copyright © 2012, Oracle and/or its affiliates. All rights Insert Informaion Protection Policy Classification from Slide 7
reserved.
- 9. Структура молодого поколения
9 Copyright © 2012, Oracle and/or its affiliates. All rights Insert Informaion Protection Policy Classification from Slide 7
reserved.
- 10. Молодое поколение: сборка мусора
10 Copyright © 2012, Oracle and/or its affiliates. All rights Insert Informaion Protection Policy Classification from Slide 7
reserved.
- 11. Молодое поколение: сборка мусора
11 Copyright © 2012, Oracle and/or its affiliates. All rights Insert Informaion Protection Policy Classification from Slide 7
reserved.
- 12. Производительность GC
• 3 характеристики
• Throughput
• Объем вычислительных ресурсов, затрачиваемых на GC
• Предсказуемость
• На какое время прерывается работа приложения
• Footprint
• Объем используемой памяти
12 Copyright © 2012, Oracle and/or its affiliates. All rights Insert Informaion Protection Policy Classification from Slide 7
reserved.
- 13. Производительность GC
Выбор стратегии
Throughput
Latency Footprint =
13 Copyright © 2012, Oracle and/or its affiliates. All rights Insert Informaion Protection Policy Classification from Slide 7
reserved.
- 14. Производительность GC
Изменение размера «кучи»
Throughput
Latency Footprint
14 Copyright © 2012, Oracle and/or its affiliates. All rights Insert Informaion Protection Policy Classification from Slide 7
reserved.
- 15. Чем хорош Stop-The-World GC?
• Проще всего определять достижимость объектов
– Граф объектов «заморожен»
• Проще всего перемещать объекты в «куче»
– В процессе сборки, «куча» может находиться в некорректном
состоянии
• Но:
– Приложение останавливается на все время сборки
– зависит от размера «кучи» / объема живых объектов
15 Copyright © 2012, Oracle and/or its affiliates. All rights Insert Informaion Protection Policy Classification from Slide 7
reserved.
- 16. Инкрементальная сборка
• Попытка уменьшить паузы, вызванные GC, за счет
– Большего количества коротких пауз
– Фоновая сборка
• Требуется синхронизировать работу GC с
приложением
– Барьеры на чтение/запись
16 Copyright © 2012, Oracle and/or its affiliates. All rights Insert Informaion Protection Policy Classification from Slide 7
reserved.
- 17. Предсказуемость vs Throughput
• STW
– Продолжительные паузы
– … но никакой лишней нагрузки для потоков приложения
– Максимальный throughput
• Инкрементальная сборка
– Короткие паузы
– Лишняя нагруза в потоках приложения
– Минимальные паузы за счет снижения throughput
• “Über GC” не существует
17 Copyright © 2012, Oracle and/or its affiliates. All rights Insert Informaion Protection Policy Classification from Slide 7
reserved.
- 18. Содержание
• Основы сборки мусора
• G1: обзор архитектуры
• Миграция на G1
18 Copyright © 2012, Oracle and/or its affiliates. All rights Insert Informaion Protection Policy Classification from Slide 7
reserved.
- 19. Garbage-First GC (G1)
• Фоновый и параллельный
• Высокая предсказуемость работы
• Сборщик мусора с поколениями, но …
• «Куча» состоит из регионов
• Нет физического разделения между молодым и старым
поколением
• Принадлежность регионов определяется динамически
• Для каждого региона известно где находятся объекты,
ссылающиеся на него
• “Remembered Set”
• Позволяет собирать регионы независимо
19 Copyright © 2012, Oracle and/or its affiliates. All rights Insert Informaion Protection Policy Classification from Slide 7
reserved.
- 20. G1: Структура «кучи»
Разбита на регионы
• Разбита на регионы
• Фиксированного размера
• Фиксированного размера
• 1MB-32MB
• 1MB-32MB
20 Copyright © 2012, Oracle and/or its affiliates. All rights Insert Informaion Protection Policy Classification from Slide 7
reserved.
- 21. G1: Структура «кучи»
Молодое поколение
• Молодое поколение
E Набор регионов
E • Набор регионов
•
• Eden
• Eden S • Survivor
• Survivor
E E • Выбираются динамически
• Выбираются динамически
S
E
E
21 Copyright © 2012, Oracle and/or its affiliates. All rights Insert Informaion Protection Policy Classification from Slide 7
reserved.
- 22. G1: Структура «кучи»
Старое поколение
• Старое поколение
• Набор регионов
E Набор регионов
– E
• Выбираются динамически
– Выбираются S
динамически
E E
S
E
E
22 Copyright © 2012, Oracle and/or its affiliates. All rights Insert Informaion Protection Policy Classification from Slide 7
reserved.
- 23. G1: Структура «кучи»
H Большие объекты
• Не помещается в регион
E E
• Называется “humongous”
S • Хранится в наборе
E E смежных регионов
S
E H
E
H
23 Copyright © 2012, Oracle and/or its affiliates. All rights Insert Informaion Protection Policy Classification from Slide 7
reserved.
- 24. G1: Структура «кучи»
H Collection Set
• Регионы, в которых будет
происходить GC
S • Все молодое поколение
• Некоторые регионы из
старшего поколения
S • Фоновая маркировка
определяет наиболее
H подходящие
H
24 Copyright © 2012, Oracle and/or its affiliates. All rights Insert Informaion Protection Policy Classification from Slide 7
reserved.
- 25. G1: Структура «кучи»
H Сборка
• Копирование объектов в
регионы, помеченные как
S часть «To»-пространства
• Survivor-регионы
• Регионы из старшего
S поколения
H
H S
25 Copyright © 2012, Oracle and/or its affiliates. All rights Insert Informaion Protection Policy Classification from Slide 7
reserved.
- 26. G1: Структура «кучи»
H Освобождение памяти
• From-space больше чем To-
space (не обязательно!)
• Компактификация за счет
копирования
H
H S
26 Copyright © 2012, Oracle and/or its affiliates. All rights Insert Informaion Protection Policy Classification from Slide 7
reserved.
- 27. G1: Структура «кучи»
H • RSet == Remembered Set
• Информация о
местонахождении ссылок на
объекты из региона
• Позволяет собирать регионы
RS независимо
• RSet поддерживается
H • Из старого в молодое
поколение
RS • Между регионами в старом
E поколении
H S
27 Copyright © 2012, Oracle and/or its affiliates. All rights Insert Informaion Protection Policy Classification from Slide 7
reserved.
- 28. G1: Фоновая маркировка
• Периодически все живые объекты в куче
помечаются
• обновляет информацию о достижимости по регионам
• автоматически освобождает регионы без живых объектов
• разбивает циклические зависимости среди недостижимых
объектов
• Параллельная и фоновая
• Стартует автоматически по достижении пороговой
занятости «кучи»
28 Copyright © 2012, Oracle and/or its affiliates. All rights Insert Informaion Protection Policy Classification from Slide 7
reserved.
- 29. Барьер на запись
• Код, исполняемый при изменении значения поля
объекта с указателем
• Специфичен для каждого GC
• Абсолютно прозрачен для приложения
• Исполняется интерпретатором / генерируется JIT-компилятором
• Пример (для обновления card table):
a.f = x; a.f = x;
card_table[index_for(&a.f)] = DIRTY_VALUE;
29 Copyright © 2012, Oracle and/or its affiliates. All rights Insert Informaion Protection Policy Classification from Slide 7
reserved.
- 30. G1: Барьеры на запись
• 2 типа
– Pre-barrier
• Сохраняет старое значение поля
• Поддерживается корректность фоновой маркировки
• SATB (Snapshot-At-The-Beginning)
– Post-barrier
• Поддержка актуальности RSet
• Результат сохраняется в буферы, локальные для
потока
– В процессе фоновой сборки происходит обработка
30 Copyright © 2012, Oracle and/or its affiliates. All rights Insert Informaion Protection Policy Classification from Slide 7
reserved.
- 31. G1: Как включить?
• -XX:+UseG1GC
• -Xms/-Xmx
• Задаваемые цели на длительность и частоту пауз
– -XX:MaxGCPauseMillis=<num>
– -XX:GCPauseIntervalMillis=<num>
31 Copyright © 2012, Oracle and/or its affiliates. All rights Insert Informaion Protection Policy Classification from Slide 7
reserved.
- 32. Содержание
• Основы сборки мусора
• G1: обзор архитектуры
• Миграция на G1
32 Copyright © 2012, Oracle and/or its affiliates. All rights Insert Informaion Protection Policy Classification from Slide 7
reserved.
- 33. GCs в Hotspot JVM
GC Framework GC Interface
Parallel /
Serial Parallel Serial Parallel
Concurrent
Young
DefNew ParNew PScavenge
Gen
Old
Tenured CMS PSOld PSParOld
Gen
Whole
G1
Heap
33 Copyright © 2012, Oracle and/or its affiliates. All rights Insert Informaion Protection Policy Classification from Slide 7
reserved.
- 34. GC в Hotspot JVM
• SerialGC
– последовательная сборка молодого и старого поколений
• ParallelGC
– максимальный throughput
– параллельная сборка молодого и старого поколений
• CMS
– предсказуемость
– по возможности, сборка мусора в фоновом режиме
• G1
– предсказуемость
– слабо подвержен фрагментации
34 Copyright © 2012, Oracle and/or its affiliates. All rights Insert Informaion Protection Policy Classification from Slide 7
reserved.
- 35. Производительность GC
Throughput
Latency Footprint
35 Copyright © 2012, Oracle and/or its affiliates. All rights Insert Informaion Protection Policy Classification from Slide 7
reserved.
- 36. G1 рекомендуется, если…
… не обязательно все…
• Нужна хорошая производительность
• Продолжительность пауз (<0.5-1s)
• Минимальная настройка
• Размер «кучи» >5Gb
• Занятость «кучи» >50%
• Скорость создания объектов серьезно варьируется
• Фрагментация «кучи»
36 Copyright © 2012, Oracle and/or its affiliates. All rights Insert Informaion Protection Policy Classification from Slide 7
reserved.
- 37. G1 НЕ рекомендуется, если
• Приложение уже работает надежно без серьезных
проблем с производительностью
“If it isn't broken, don't fix it!”
• Жесткие требования на паузы <100мс
• Требуется максимальный возможный throughput
• даже в ущерб latency
37 Copyright © 2012, Oracle and/or its affiliates. All rights Insert Informaion Protection Policy Classification from Slide 7
reserved.
- 38. Как выбирать GC?
1. ParallelGC
Паузы не устраивают
2. G1 Подходит? ДA! PROFIT!
Паузы все еще не устраивают
«Куча» <2Gb
3. CMS
38 Copyright © 2012, Oracle and/or its affiliates. All rights Insert Informaion Protection Policy Classification from Slide 7
reserved.
- 39. Q&A
39 Copyright © 2012, Oracle and/or its affiliates. All rights Insert Informaion Protection Policy Classification from Slide 7
reserved.
- 40. India
3–4 May 2012
San Francisco
September 30–October 4, 2012
40 Copyright © 2012, Oracle and/or its affiliates. All rights Insert Informaion Protection Policy Classification from Slide 7
reserved.