Soumettre la recherche
Mettre en ligne
G1 GC: Garbage-First Garbage Collector
•
5 j'aime
•
2,496 vues
Vladimir Ivanov
Suivre
@ J1 2012 Moscow
Lire moins
Lire la suite
Signaler
Partager
Signaler
Partager
1 sur 40
Télécharger maintenant
Télécharger pour lire hors ligne
Recommandé
Управление памятью в Java: Footprint
Управление памятью в Java: Footprint
Vladimir Ivanov
Секреты сборки мусора в Java
Секреты сборки мусора в Java
aragozin
"G1 GC и Обзор сборки мусора в HotSpot JVM" @ JUG SPb, 31-05-2012
"G1 GC и Обзор сборки мусора в HotSpot JVM" @ JUG SPb, 31-05-2012
Vladimir Ivanov
CodeFest 2012. Иванов В. — G1: новый сборщик мусора в HotSpot JVM
CodeFest 2012. Иванов В. — G1: новый сборщик мусора в HotSpot JVM
CodeFest
Анализ и обработка изображений. Классификация изображений и распознавание об...
Анализ и обработка изображений. Классификация изображений и распознавание об...
Yandex
13 октября, DEV {web} - конференция о Highload веб-разработке. "Java под нагр...
13 октября, DEV {web} - конференция о Highload веб-разработке. "Java под нагр...
IT-Portfolio
Многоуровневая компиляция в HotSpot JVM
Многоуровневая компиляция в HotSpot JVM
Vladimir Ivanov
Анализ изображений и видео. Сегментация изображений
Анализ изображений и видео. Сегментация изображений
Yandex
Recommandé
Управление памятью в Java: Footprint
Управление памятью в Java: Footprint
Vladimir Ivanov
Секреты сборки мусора в Java
Секреты сборки мусора в Java
aragozin
"G1 GC и Обзор сборки мусора в HotSpot JVM" @ JUG SPb, 31-05-2012
"G1 GC и Обзор сборки мусора в HotSpot JVM" @ JUG SPb, 31-05-2012
Vladimir Ivanov
CodeFest 2012. Иванов В. — G1: новый сборщик мусора в HotSpot JVM
CodeFest 2012. Иванов В. — G1: новый сборщик мусора в HotSpot JVM
CodeFest
Анализ и обработка изображений. Классификация изображений и распознавание об...
Анализ и обработка изображений. Классификация изображений и распознавание об...
Yandex
13 октября, DEV {web} - конференция о Highload веб-разработке. "Java под нагр...
13 октября, DEV {web} - конференция о Highload веб-разработке. "Java под нагр...
IT-Portfolio
Многоуровневая компиляция в HotSpot JVM
Многоуровневая компиляция в HotSpot JVM
Vladimir Ivanov
Анализ изображений и видео. Сегментация изображений
Анализ изображений и видео. Сегментация изображений
Yandex
"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,...
Vladimir Ivanov
"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
Vladimir Ivanov
JVM JIT-compiler overview @ JavaOne Moscow 2013
JVM JIT-compiler overview @ JavaOne Moscow 2013
Vladimir Ivanov
"Invokedynamic: роскошь или необходимость?"@ JavaOne Moscow 2013
"Invokedynamic: роскошь или необходимость?"@ JavaOne Moscow 2013
Vladimir Ivanov
"Диагностирование проблем и настройка GC в HotSpot JVM" (JEEConf, Киев, 2011)
"Диагностирование проблем и настройка GC в HotSpot JVM" (JEEConf, Киев, 2011)
Vladimir Ivanov
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
Vladimir Ivanov
"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
Vladimir Ivanov
"JIT compiler overview" @ JEEConf 2013, Kiev, Ukraine
"JIT compiler overview" @ JEEConf 2013, Kiev, Ukraine
Vladimir Ivanov
JVM JIT-compiler overview @ JavaOne Moscow 2013
JVM JIT-compiler overview @ JavaOne Moscow 2013
Vladimir Ivanov
"Invokedynamic: роскошь или необходимость?"@ JavaOne Moscow 2013
"Invokedynamic: роскошь или необходимость?"@ JavaOne Moscow 2013
Vladimir Ivanov
"Диагностирование проблем и настройка 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
"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
"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 2013
"Invokedynamic: роскошь или необходимость?"@ JavaOne Moscow 2013
"Invokedynamic: роскошь или необходимость?"@ JavaOne Moscow 2013
"Диагностирование проблем и настройка 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.
Télécharger maintenant