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