G1 GC: Garbage-First Garbage Collector

40
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

description

@ J1 2012 Moscow

Transcript of G1 GC: Garbage-First Garbage Collector

Page 1: G1 GC: Garbage-First Garbage Collector

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

Page 2: G1 GC: Garbage-First Garbage Collector

2 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

G1GC: Garbage-First Garbage Collector

Владимир Иванов

Oracle Corporation

[email protected]

Page 3: G1 GC: Garbage-First Garbage Collector

3 Copyright © 2012, Oracle and/or its affiliates. All rights

reserved.

Insert Informaion Protection Policy Classification from Slide 7

Содержание

• Основы сборки мусора

• G1: обзор архитектуры

• Миграция на G1

Page 4: G1 GC: Garbage-First Garbage Collector

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, ...

Page 5: G1 GC: Garbage-First Garbage Collector

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

Page 6: G1 GC: Garbage-First Garbage Collector

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

Page 7: G1 GC: Garbage-First Garbage Collector

7 Copyright © 2012, Oracle and/or its affiliates. All rights

reserved.

Insert Informaion Protection Policy Classification from Slide 7

Сборка мусора с поколениями

• Слабая гипотеза о поколениях

– Большинство объектов временные

– Старые объекты редко ссылаются на молодые

• Молодые и старые объекты содержатся отдельно

– В пространствах, называемых “поколения” (generations)

– Возможны разные алгоритмы для молодого и старого

поколения

– Mолодое поколение можно собирать отдельно от старого

Page 8: G1 GC: Garbage-First Garbage Collector

8 Copyright © 2012, Oracle and/or its affiliates. All rights

reserved.

Insert Informaion Protection Policy Classification from Slide 7

Сборка мусора с поколениями

Молодое поколение

Старшее поколение

Перемещение объекта

Создание объекта Необходимо

отслеживать ссылки

Page 9: G1 GC: Garbage-First Garbage Collector

9 Copyright © 2012, Oracle and/or its affiliates. All rights

reserved.

Insert Informaion Protection Policy Classification from Slide 7

Структура молодого поколения

Page 10: G1 GC: Garbage-First Garbage Collector

10 Copyright © 2012, Oracle and/or its affiliates. All rights

reserved.

Insert Informaion Protection Policy Classification from Slide 7

Молодое поколение: сборка мусора

Page 11: G1 GC: Garbage-First Garbage Collector

11 Copyright © 2012, Oracle and/or its affiliates. All rights

reserved.

Insert Informaion Protection Policy Classification from Slide 7

Молодое поколение: сборка мусора

Page 12: G1 GC: Garbage-First Garbage Collector

12 Copyright © 2012, Oracle and/or its affiliates. All rights

reserved.

Insert Informaion Protection Policy Classification from Slide 7

Производительность GC

• 3 характеристики

• Throughput

• Объем вычислительных ресурсов, затрачиваемых на GC

• Предсказуемость

• На какое время прерывается работа приложения

• Footprint

• Объем используемой памяти

Page 13: G1 GC: Garbage-First Garbage Collector

13 Copyright © 2012, Oracle and/or its affiliates. All rights

reserved.

Insert Informaion Protection Policy Classification from Slide 7

Производительность GC Выбор стратегии

Throughput

Footprint Latency =

Page 14: G1 GC: Garbage-First Garbage Collector

14 Copyright © 2012, Oracle and/or its affiliates. All rights

reserved.

Insert Informaion Protection Policy Classification from Slide 7

Производительность GC Изменение размера «кучи»

Throughput

Footprint Latency

Page 15: G1 GC: Garbage-First Garbage Collector

15 Copyright © 2012, Oracle and/or its affiliates. All rights

reserved.

Insert Informaion Protection Policy Classification from Slide 7

Чем хорош Stop-The-World GC?

• Проще всего определять достижимость объектов

– Граф объектов «заморожен»

• Проще всего перемещать объекты в «куче»

– В процессе сборки, «куча» может находиться в некорректном

состоянии

• Но:

– Приложение останавливается на все время сборки

– зависит от размера «кучи» / объема живых объектов

Page 16: G1 GC: Garbage-First Garbage Collector

16 Copyright © 2012, Oracle and/or its affiliates. All rights

reserved.

Insert Informaion Protection Policy Classification from Slide 7

Инкрементальная сборка

• Попытка уменьшить паузы, вызванные GC, за счет

– Большего количества коротких пауз

– Фоновая сборка

• Требуется синхронизировать работу GC с

приложением

– Барьеры на чтение/запись

Page 17: G1 GC: Garbage-First Garbage Collector

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” не существует

Page 18: G1 GC: Garbage-First Garbage Collector

18 Copyright © 2012, Oracle and/or its affiliates. All rights

reserved.

Insert Informaion Protection Policy Classification from Slide 7

Содержание

• Основы сборки мусора

• G1: обзор архитектуры

• Миграция на G1

Page 19: G1 GC: Garbage-First Garbage Collector

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”

• Позволяет собирать регионы независимо

Page 20: G1 GC: Garbage-First Garbage Collector

20 Copyright © 2012, Oracle and/or its affiliates. All rights

reserved.

Insert Informaion Protection Policy Classification from Slide 7

G1: Структура «кучи»

• Разбита на регионы

• Фиксированного размера

• 1MB-32MB

Разбита на регионы

• Фиксированного размера

• 1MB-32MB

Page 21: G1 GC: Garbage-First Garbage Collector

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

• Выбираются динамически

Page 22: G1 GC: Garbage-First Garbage Collector

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

Старое поколение

• Набор регионов

• Выбираются динамически

Page 23: G1 GC: Garbage-First Garbage Collector

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”

• Хранится в наборе

смежных регионов

Page 24: G1 GC: Garbage-First Garbage Collector

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

• Все молодое поколение

• Некоторые регионы из

старшего поколения

• Фоновая маркировка

определяет наиболее

подходящие

Page 25: G1 GC: Garbage-First Garbage Collector

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-регионы

• Регионы из старшего

поколения

Page 26: G1 GC: Garbage-First Garbage Collector

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 (не обязательно!)

• Компактификация за счет

копирования

Page 27: G1 GC: Garbage-First Garbage Collector

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 поддерживается

• Из старого в молодое

поколение

• Между регионами в старом

поколении

Page 28: G1 GC: Garbage-First Garbage Collector

28 Copyright © 2012, Oracle and/or its affiliates. All rights

reserved.

Insert Informaion Protection Policy Classification from Slide 7

G1: Фоновая маркировка

• Периодически все живые объекты в куче

помечаются

• обновляет информацию о достижимости по регионам

• автоматически освобождает регионы без живых объектов

• разбивает циклические зависимости среди недостижимых

объектов

• Параллельная и фоновая

• Стартует автоматически по достижении пороговой

занятости «кучи»

Page 29: G1 GC: Garbage-First Garbage Collector

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;

Page 30: G1 GC: Garbage-First Garbage Collector

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

• Результат сохраняется в буферы, локальные для

потока

– В процессе фоновой сборки происходит обработка

Page 31: G1 GC: Garbage-First Garbage Collector

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>

Page 32: G1 GC: Garbage-First Garbage Collector

32 Copyright © 2012, Oracle and/or its affiliates. All rights

reserved.

Insert Informaion Protection Policy Classification from Slide 7

Содержание

• Основы сборки мусора

• G1: обзор архитектуры

• Миграция на G1

Page 33: G1 GC: Garbage-First Garbage Collector

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

Page 34: G1 GC: Garbage-First Garbage Collector

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

– предсказуемость

– слабо подвержен фрагментации

Page 35: G1 GC: Garbage-First Garbage Collector

35 Copyright © 2012, Oracle and/or its affiliates. All rights

reserved.

Insert Informaion Protection Policy Classification from Slide 7

Производительность GC

Throughput

Footprint Latency

Page 36: G1 GC: Garbage-First Garbage Collector

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%

• Скорость создания объектов серьезно варьируется

• Фрагментация «кучи»

Page 37: G1 GC: Garbage-First Garbage Collector

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

Page 38: G1 GC: Garbage-First Garbage Collector

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!

Page 39: G1 GC: Garbage-First Garbage Collector

39 Copyright © 2012, Oracle and/or its affiliates. All rights

reserved.

Insert Informaion Protection Policy Classification from Slide 7

Q&A

Page 40: G1 GC: Garbage-First Garbage Collector

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