Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
India                                                                                                                   3–...
G1GC: Garbage-First Garbage Collector    Владимир Иванов    Oracle Corporation2   Copyright © 2012, Oracle and/or its affi...
Содержание    • Основы сборки мусора    • G1: обзор архитектуры    • Миграция на G13   Copyright © 2012, Oracle and/or its...
GC == Сборка мусора    • Находит и освобождает место, занимаемое      ненужными объектами         – Объекты вне транзитивн...
Сборка мусора: доRuntime                                        Heap Stack                                                ...
Сборка мусора: послеRuntime                                        Heap Stack                                             ...
Сборка мусора с поколениями    • Слабая гипотеза о поколениях         – Большинство объектов временные         – Старые об...
Сборка мусора с поколениями                                                                                               ...
Структура молодого поколения9   Copyright © 2012, Oracle and/or its affiliates. All rights   Insert Informaion Protection ...
Молодое поколение: сборка мусора10   Copyright © 2012, Oracle and/or its affiliates. All rights   Insert Informaion Protec...
Молодое поколение: сборка мусора11   Copyright © 2012, Oracle and/or its affiliates. All rights   Insert Informaion Protec...
Производительность GC     • 3 характеристики          • Throughput                   • Объем вычислительных ресурсов, затр...
Производительность GC     Выбор стратегии                                                                  Throughput     ...
Производительность GC     Изменение размера «кучи»                                                                  Throug...
Чем хорош Stop-The-World GC?     • Проще всего определять достижимость объектов          – Граф объектов «заморожен»     •...
Инкрементальная сборка     • Попытка уменьшить паузы, вызванные GC, за счет          – Большего количества коротких пауз  ...
Предсказуемость vs Throughput     • STW          – Продолжительные паузы          – … но никакой лишней нагрузки для поток...
Содержание     • Основы сборки мусора     • G1: обзор архитектуры     • Миграция на G118   Copyright © 2012, Oracle and/or...
Garbage-First GC (G1)     • Фоновый и параллельный     • Высокая предсказуемость работы     • Сборщик мусора с поколениями...
G1: Структура «кучи»                                                                                                      ...
G1: Структура «кучи»                                                                                                      ...
G1: Структура «кучи»                                                                                                      ...
G1: Структура «кучи»                                                                                 H                    ...
G1: Структура «кучи»                                                                                 H                    ...
G1: Структура «кучи»                                                                                 H                    ...
G1: Структура «кучи»                                                                             H                        ...
G1: Структура «кучи»                                                                             H                        ...
G1: Фоновая маркировка     • Периодически все живые объекты в куче       помечаются          • обновляет информацию о дост...
Барьер на запись     • Код, исполняемый при изменении значения поля       объекта с указателем          • Специфичен для к...
G1: Барьеры на запись     • 2 типа          – Pre-barrier                   • Сохраняет старое значение поля              ...
G1: Как включить?     • -XX:+UseG1GC     • -Xms/-Xmx     • Задаваемые цели на длительность и частоту пауз          – -XX:M...
Содержание     • Основы сборки мусора     • G1: обзор архитектуры     • Миграция на G132   Copyright © 2012, Oracle and/or...
GCs в Hotspot JVM                                                             GC Framework                                ...
GC в Hotspot JVM     • SerialGC          – последовательная сборка молодого и старого поколений     • ParallelGC          ...
Производительность GC                                                                  Throughput            Latency      ...
G1 рекомендуется, если…     … не обязательно все…     •      Нужна хорошая производительность     •      Продолжительность...
G1 НЕ рекомендуется, если     • Приложение уже работает надежно без серьезных       проблем с производительностью         ...
Как выбирать GC?               1.                                   ParallelGC                                     Паузы н...
Q&A39   Copyright © 2012, Oracle and/or its affiliates. All rights   Insert Informaion Protection Policy Classification fr...
India                                                                                                                    3...
Upcoming SlideShare
Loading in …5
×

G1 GC: Garbage-First Garbage Collector

4,431 views

Published on

@ J1 2012 Moscow

  • Be the first to comment

G1 GC: Garbage-First Garbage Collector

  1. 1. India 3–4 May 2012 San Francisco September 30–October 4, 20121 Copyright © 2012, Oracle and/or its affiliates. All rights Insert Informaion Protection Policy Classification from Slide 7 reserved.
  2. 2. G1GC: Garbage-First Garbage Collector Владимир Иванов Oracle Corporation2 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. vladimir.x.ivanov@oracle.com
  3. 3. Содержание • Основы сборки мусора • G1: обзор архитектуры • Миграция на G13 Copyright © 2012, Oracle and/or its affiliates. All rights Insert Informaion Protection Policy Classification from Slide 7 reserved.
  4. 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. 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. 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. 7. Сборка мусора с поколениями • Слабая гипотеза о поколениях – Большинство объектов временные – Старые объекты редко ссылаются на молодые • Молодые и старые объекты содержатся отдельно – В пространствах, называемых “поколения” (generations) – Возможны разные алгоритмы для молодого и старого поколения – Mолодое поколение можно собирать отдельно от старого7 Copyright © 2012, Oracle and/or its affiliates. All rights Insert Informaion Protection Policy Classification from Slide 7 reserved.
  8. 8. Сборка мусора с поколениями Создание объектаНеобходимоотслеживать ссылки Молодое поколение Перемещение объекта Старшее поколение8 Copyright © 2012, Oracle and/or its affiliates. All rights Insert Informaion Protection Policy Classification from Slide 7 reserved.
  9. 9. Структура молодого поколения9 Copyright © 2012, Oracle and/or its affiliates. All rights Insert Informaion Protection Policy Classification from Slide 7 reserved.
  10. 10. Молодое поколение: сборка мусора10 Copyright © 2012, Oracle and/or its affiliates. All rights Insert Informaion Protection Policy Classification from Slide 7 reserved.
  11. 11. Молодое поколение: сборка мусора11 Copyright © 2012, Oracle and/or its affiliates. All rights Insert Informaion Protection Policy Classification from Slide 7 reserved.
  12. 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. 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. 14. Производительность GC Изменение размера «кучи» Throughput Latency Footprint14 Copyright © 2012, Oracle and/or its affiliates. All rights Insert Informaion Protection Policy Classification from Slide 7 reserved.
  15. 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. 16. Инкрементальная сборка • Попытка уменьшить паузы, вызванные GC, за счет – Большего количества коротких пауз – Фоновая сборка • Требуется синхронизировать работу GC с приложением – Барьеры на чтение/запись16 Copyright © 2012, Oracle and/or its affiliates. All rights Insert Informaion Protection Policy Classification from Slide 7 reserved.
  17. 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. 18. Содержание • Основы сборки мусора • G1: обзор архитектуры • Миграция на G118 Copyright © 2012, Oracle and/or its affiliates. All rights Insert Informaion Protection Policy Classification from Slide 7 reserved.
  19. 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. 20. G1: Структура «кучи» Разбита на регионы • Разбита на регионы • Фиксированного размера • Фиксированного размера • 1MB-32MB • 1MB-32MB20 Copyright © 2012, Oracle and/or its affiliates. All rights Insert Informaion Protection Policy Classification from Slide 7 reserved.
  21. 21. G1: Структура «кучи» Молодое поколение • Молодое поколение E Набор регионов E • Набор регионов • • Eden • Eden S • Survivor • Survivor E E • Выбираются динамически • Выбираются динамически S E E21 Copyright © 2012, Oracle and/or its affiliates. All rights Insert Informaion Protection Policy Classification from Slide 7 reserved.
  22. 22. G1: Структура «кучи» Старое поколение • Старое поколение • Набор регионов E Набор регионов – E • Выбираются динамически – Выбираются S динамически E E S E E22 Copyright © 2012, Oracle and/or its affiliates. All rights Insert Informaion Protection Policy Classification from Slide 7 reserved.
  23. 23. G1: Структура «кучи» H Большие объекты • Не помещается в регион E E • Называется “humongous” S • Хранится в наборе E E смежных регионов S E H E H23 Copyright © 2012, Oracle and/or its affiliates. All rights Insert Informaion Protection Policy Classification from Slide 7 reserved.
  24. 24. G1: Структура «кучи» H Collection Set • Регионы, в которых будет происходить GC S • Все молодое поколение • Некоторые регионы из старшего поколения S • Фоновая маркировка определяет наиболее H подходящие H24 Copyright © 2012, Oracle and/or its affiliates. All rights Insert Informaion Protection Policy Classification from Slide 7 reserved.
  25. 25. G1: Структура «кучи» H Сборка • Копирование объектов в регионы, помеченные как S часть «To»-пространства • Survivor-регионы • Регионы из старшего S поколения H H S25 Copyright © 2012, Oracle and/or its affiliates. All rights Insert Informaion Protection Policy Classification from Slide 7 reserved.
  26. 26. G1: Структура «кучи» H Освобождение памяти • From-space больше чем To- space (не обязательно!) • Компактификация за счет копирования H H S26 Copyright © 2012, Oracle and/or its affiliates. All rights Insert Informaion Protection Policy Classification from Slide 7 reserved.
  27. 27. G1: Структура «кучи» H • RSet == Remembered Set • Информация о местонахождении ссылок на объекты из региона • Позволяет собирать регионы RS независимо • RSet поддерживается H • Из старого в молодое поколение RS • Между регионами в старом E поколении H S27 Copyright © 2012, Oracle and/or its affiliates. All rights Insert Informaion Protection Policy Classification from Slide 7 reserved.
  28. 28. G1: Фоновая маркировка • Периодически все живые объекты в куче помечаются • обновляет информацию о достижимости по регионам • автоматически освобождает регионы без живых объектов • разбивает циклические зависимости среди недостижимых объектов • Параллельная и фоновая • Стартует автоматически по достижении пороговой занятости «кучи»28 Copyright © 2012, Oracle and/or its affiliates. All rights Insert Informaion Protection Policy Classification from Slide 7 reserved.
  29. 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. 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. 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. 32. Содержание • Основы сборки мусора • G1: обзор архитектуры • Миграция на G132 Copyright © 2012, Oracle and/or its affiliates. All rights Insert Informaion Protection Policy Classification from Slide 7 reserved.
  33. 33. GCs в Hotspot JVM GC Framework GC Interface Parallel / Serial Parallel Serial Parallel ConcurrentYoung DefNew ParNew PScavenge GenOld Tenured CMS PSOld PSParOldGenWhole G1Heap 33 Copyright © 2012, Oracle and/or its affiliates. All rights Insert Informaion Protection Policy Classification from Slide 7 reserved.
  34. 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. 35. Производительность GC Throughput Latency Footprint35 Copyright © 2012, Oracle and/or its affiliates. All rights Insert Informaion Protection Policy Classification from Slide 7 reserved.
  36. 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. 37. G1 НЕ рекомендуется, если • Приложение уже работает надежно без серьезных проблем с производительностью “If it isnt broken, dont fix it!” • Жесткие требования на паузы <100мс • Требуется максимальный возможный throughput • даже в ущерб latency37 Copyright © 2012, Oracle and/or its affiliates. All rights Insert Informaion Protection Policy Classification from Slide 7 reserved.
  38. 38. Как выбирать GC? 1. ParallelGC Паузы не устраивают 2. G1 Подходит? ДA! PROFIT! Паузы все еще не устраивают «Куча» <2Gb 3. CMS38 Copyright © 2012, Oracle and/or its affiliates. All rights Insert Informaion Protection Policy Classification from Slide 7 reserved.
  39. 39. Q&A39 Copyright © 2012, Oracle and/or its affiliates. All rights Insert Informaion Protection Policy Classification from Slide 7 reserved.
  40. 40. India 3–4 May 2012 San Francisco September 30–October 4, 201240 Copyright © 2012, Oracle and/or its affiliates. All rights Insert Informaion Protection Policy Classification from Slide 7 reserved.

×