G1 GC: Garbage-First Garbage Collector

Post on 28-Nov-2014

3.695 views 9 download

description

@ J1 2012 Moscow

Transcript of 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

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

G1GC: Garbage-First Garbage Collector

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

Oracle Corporation

vladimir.x.ivanov@oracle.com

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