SlideShare une entreprise Scribd logo
1  sur  40
Télécharger pour lire hors ligne
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.
G1GC: Garbage-First Garbage Collector
    Владимир Иванов
    Oracle Corporation
2   Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
    vladimir.x.ivanov@oracle.com
Содержание


    • Основы сборки мусора
    • G1: обзор архитектуры
    • Миграция на G1




3   Copyright © 2012, Oracle and/or its affiliates. All rights   Insert Informaion Protection Policy Classification from Slide 7
    reserved.
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.
Сборка мусора: до


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.
Сборка мусора: после


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.
Сборка мусора с поколениями


    • Слабая гипотеза о поколениях
         – Большинство объектов временные
         – Старые объекты редко ссылаются на молодые


    • Молодые и старые объекты содержатся отдельно
         – В пространствах, называемых “поколения” (generations)
         – Возможны разные алгоритмы для молодого и старого
           поколения
         – Mолодое поколение можно собирать отдельно от старого




7   Copyright © 2012, Oracle and/or its affiliates. All rights   Insert Informaion Protection Policy Classification from Slide 7
    reserved.
Сборка мусора с поколениями


                                                                                                                                    Создание объекта
Необходимо
отслеживать ссылки

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



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




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




8   Copyright © 2012, Oracle and/or its affiliates. All rights   Insert Informaion Protection Policy Classification from Slide 7
    reserved.
Структура молодого поколения




9   Copyright © 2012, Oracle and/or its affiliates. All rights   Insert Informaion Protection Policy Classification from Slide 7
    reserved.
Молодое поколение: сборка мусора




10   Copyright © 2012, Oracle and/or its affiliates. All rights   Insert Informaion Protection Policy Classification from Slide 7
     reserved.
Молодое поколение: сборка мусора




11   Copyright © 2012, Oracle and/or its affiliates. All rights   Insert Informaion Protection Policy Classification from Slide 7
     reserved.
Производительность GC


     • 3 характеристики
          • Throughput
                   • Объем вычислительных ресурсов, затрачиваемых на GC
          • Предсказуемость
                   • На какое время прерывается работа приложения
          • Footprint
                   • Объем используемой памяти




12   Copyright © 2012, Oracle and/or its affiliates. All rights   Insert Informaion Protection Policy Classification from Slide 7
     reserved.
Производительность GC
     Выбор стратегии


                                                                  Throughput




            Latency                                                                                                                  Footprint =




13   Copyright © 2012, Oracle and/or its affiliates. All rights    Insert Informaion Protection Policy Classification from Slide 7
     reserved.
Производительность GC
     Изменение размера «кучи»


                                                                  Throughput




            Latency                                                                                                                  Footprint




14   Copyright © 2012, Oracle and/or its affiliates. All rights    Insert Informaion Protection Policy Classification from Slide 7
     reserved.
Чем хорош Stop-The-World GC?


     • Проще всего определять достижимость объектов
          – Граф объектов «заморожен»
     • Проще всего перемещать объекты в «куче»
          – В процессе сборки, «куча» может находиться в некорректном
            состоянии


     • Но:
          – Приложение останавливается на все время сборки
          – зависит от размера «кучи» / объема живых объектов




15   Copyright © 2012, Oracle and/or its affiliates. All rights   Insert Informaion Protection Policy Classification from Slide 7
     reserved.
Инкрементальная сборка


     • Попытка уменьшить паузы, вызванные GC, за счет
          – Большего количества коротких пауз
          – Фоновая сборка


     • Требуется синхронизировать работу GC с
       приложением
          – Барьеры на чтение/запись




16   Copyright © 2012, Oracle and/or its affiliates. All rights   Insert Informaion Protection Policy Classification from Slide 7
     reserved.
Предсказуемость 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.
Содержание


     • Основы сборки мусора
     • G1: обзор архитектуры
     • Миграция на G1




18   Copyright © 2012, Oracle and/or its affiliates. All rights   Insert Informaion Protection Policy Classification from Slide 7
     reserved.
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.
G1: Структура «кучи»

                                                                                                                            Разбита на регионы
     • Разбита на регионы
                                                                                                                                    • Фиксированного размера
          • Фиксированного размера
                                                                                                                                    • 1MB-32MB
          • 1MB-32MB




20   Copyright © 2012, Oracle and/or its affiliates. All rights   Insert Informaion Protection Policy Classification from Slide 7
     reserved.
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.
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.
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.
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.
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.
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.
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.
G1: Фоновая маркировка


     • Периодически все живые объекты в куче
       помечаются
          • обновляет информацию о достижимости по регионам
          • автоматически освобождает регионы без живых объектов
          • разбивает циклические зависимости среди недостижимых
            объектов
     • Параллельная и фоновая
     • Стартует автоматически по достижении пороговой
       занятости «кучи»




28   Copyright © 2012, Oracle and/or its affiliates. All rights   Insert Informaion Protection Policy Classification from Slide 7
     reserved.
Барьер на запись


     • Код, исполняемый при изменении значения поля
       объекта с указателем
          • Специфичен для каждого 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.
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.
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.
Содержание


     • Основы сборки мусора
     • G1: обзор архитектуры
     • Миграция на G1




32   Copyright © 2012, Oracle and/or its affiliates. All rights   Insert Informaion Protection Policy Classification from Slide 7
     reserved.
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.
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.
Производительность GC


                                                                  Throughput




            Latency                                                                                                                  Footprint




35   Copyright © 2012, Oracle and/or its affiliates. All rights    Insert Informaion Protection Policy Classification from Slide 7
     reserved.
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.
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.
Как выбирать 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.
Q&A



39   Copyright © 2012, Oracle and/or its affiliates. All rights   Insert Informaion Protection Policy Classification from Slide 7
     reserved.
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.

Contenu connexe

Plus de Vladimir Ivanov

"What's New in HotSpot JVM 8" @ JPoint 2014, Moscow, Russia
"What's New in HotSpot JVM 8" @ JPoint 2014, Moscow, Russia "What's New in HotSpot JVM 8" @ JPoint 2014, Moscow, Russia
"What's New in HotSpot JVM 8" @ JPoint 2014, Moscow, Russia Vladimir Ivanov
 
"Formal Verification in Java" by Shura Iline, Vladimir Ivanov @ JEEConf 2013,...
"Formal Verification in Java" by Shura Iline, Vladimir Ivanov @ JEEConf 2013,..."Formal Verification in Java" by Shura Iline, Vladimir Ivanov @ JEEConf 2013,...
"Formal Verification in Java" by Shura Iline, Vladimir Ivanov @ JEEConf 2013,...Vladimir Ivanov
 
"Optimizing Memory Footprint in Java" @ JEEConf 2013, Kiev, Ukraine
"Optimizing Memory Footprint in Java" @ JEEConf 2013, Kiev, Ukraine "Optimizing Memory Footprint in Java" @ JEEConf 2013, Kiev, Ukraine
"Optimizing Memory Footprint in Java" @ JEEConf 2013, Kiev, Ukraine Vladimir Ivanov
 
"JIT compiler overview" @ JEEConf 2013, Kiev, Ukraine
"JIT compiler overview" @ JEEConf 2013, Kiev, Ukraine"JIT compiler overview" @ JEEConf 2013, Kiev, Ukraine
"JIT compiler overview" @ JEEConf 2013, Kiev, UkraineVladimir Ivanov
 
JVM JIT-compiler overview @ JavaOne Moscow 2013
JVM JIT-compiler overview @ JavaOne Moscow 2013JVM JIT-compiler overview @ JavaOne Moscow 2013
JVM JIT-compiler overview @ JavaOne Moscow 2013Vladimir Ivanov
 
"Invokedynamic: роскошь или необходимость?"@ JavaOne Moscow 2013
"Invokedynamic: роскошь или необходимость?"@ JavaOne Moscow 2013"Invokedynamic: роскошь или необходимость?"@ JavaOne Moscow 2013
"Invokedynamic: роскошь или необходимость?"@ JavaOne Moscow 2013Vladimir Ivanov
 
"Диагностирование проблем и настройка GC в HotSpot JVM" (JEEConf, Киев, 2011)
"Диагностирование проблем и настройка GC в HotSpot JVM" (JEEConf, Киев, 2011)"Диагностирование проблем и настройка GC в HotSpot JVM" (JEEConf, Киев, 2011)
"Диагностирование проблем и настройка GC в HotSpot JVM" (JEEConf, Киев, 2011)Vladimir Ivanov
 

Plus de Vladimir Ivanov (7)

"What's New in HotSpot JVM 8" @ JPoint 2014, Moscow, Russia
"What's New in HotSpot JVM 8" @ JPoint 2014, Moscow, Russia "What's New in HotSpot JVM 8" @ JPoint 2014, Moscow, Russia
"What's New in HotSpot JVM 8" @ JPoint 2014, Moscow, Russia
 
"Formal Verification in Java" by Shura Iline, Vladimir Ivanov @ JEEConf 2013,...
"Formal Verification in Java" by Shura Iline, Vladimir Ivanov @ JEEConf 2013,..."Formal Verification in Java" by Shura Iline, Vladimir Ivanov @ JEEConf 2013,...
"Formal Verification in Java" by Shura Iline, Vladimir Ivanov @ JEEConf 2013,...
 
"Optimizing Memory Footprint in Java" @ JEEConf 2013, Kiev, Ukraine
"Optimizing Memory Footprint in Java" @ JEEConf 2013, Kiev, Ukraine "Optimizing Memory Footprint in Java" @ JEEConf 2013, Kiev, Ukraine
"Optimizing Memory Footprint in Java" @ JEEConf 2013, Kiev, Ukraine
 
"JIT compiler overview" @ JEEConf 2013, Kiev, Ukraine
"JIT compiler overview" @ JEEConf 2013, Kiev, Ukraine"JIT compiler overview" @ JEEConf 2013, Kiev, Ukraine
"JIT compiler overview" @ JEEConf 2013, Kiev, Ukraine
 
JVM JIT-compiler overview @ JavaOne Moscow 2013
JVM JIT-compiler overview @ JavaOne Moscow 2013JVM JIT-compiler overview @ JavaOne Moscow 2013
JVM JIT-compiler overview @ JavaOne Moscow 2013
 
"Invokedynamic: роскошь или необходимость?"@ JavaOne Moscow 2013
"Invokedynamic: роскошь или необходимость?"@ JavaOne Moscow 2013"Invokedynamic: роскошь или необходимость?"@ JavaOne Moscow 2013
"Invokedynamic: роскошь или необходимость?"@ JavaOne Moscow 2013
 
"Диагностирование проблем и настройка GC в HotSpot JVM" (JEEConf, Киев, 2011)
"Диагностирование проблем и настройка GC в HotSpot JVM" (JEEConf, Киев, 2011)"Диагностирование проблем и настройка GC в HotSpot JVM" (JEEConf, Киев, 2011)
"Диагностирование проблем и настройка GC в HotSpot JVM" (JEEConf, Киев, 2011)
 

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.