Soumettre la recherche
Mettre en ligne
CodeFest 2012. Иванов В. — G1: новый сборщик мусора в HotSpot JVM
•
Télécharger en tant que PPTX, PDF
•
2 j'aime
•
997 vues
CodeFest
Suivre
Signaler
Partager
Signaler
Partager
1 sur 39
Télécharger maintenant
Recommandé
CodeFest 2010. Орлов А. — Лидерство или о грядках и огородах
CodeFest 2010. Орлов А. — Лидерство или о грядках и огородах
CodeFest
CodeFest 2011. Сидоров А. — Почему некоторые программисты любят изобретать «в...
CodeFest 2011. Сидоров А. — Почему некоторые программисты любят изобретать «в...
CodeFest
CodeFest 2012. Шкарин П. — Отказоустойчивость или высокие нагрузки
CodeFest 2012. Шкарин П. — Отказоустойчивость или высокие нагрузки
CodeFest
CodeFest 2014. Симаков М. — Инфографика, как это работает
CodeFest 2014. Симаков М. — Инфографика, как это работает
CodeFest
CodeFest 2011. Ширшаков Д. — Как подружить ежа с ужом или другой взгляд на DWH
CodeFest 2011. Ширшаков Д. — Как подружить ежа с ужом или другой взгляд на DWH
CodeFest
CodeFest 2010. Иноземцев И. — Fantom. Cross-VM Language
CodeFest 2010. Иноземцев И. — Fantom. Cross-VM Language
CodeFest
CodeFest 2013. Конев М. — Push-уведомления
CodeFest 2013. Конев М. — Push-уведомления
CodeFest
CodeFest 2010. Погребняк А. — Проблемы оценки труда программистов
CodeFest 2010. Погребняк А. — Проблемы оценки труда программистов
CodeFest
Recommandé
CodeFest 2010. Орлов А. — Лидерство или о грядках и огородах
CodeFest 2010. Орлов А. — Лидерство или о грядках и огородах
CodeFest
CodeFest 2011. Сидоров А. — Почему некоторые программисты любят изобретать «в...
CodeFest 2011. Сидоров А. — Почему некоторые программисты любят изобретать «в...
CodeFest
CodeFest 2012. Шкарин П. — Отказоустойчивость или высокие нагрузки
CodeFest 2012. Шкарин П. — Отказоустойчивость или высокие нагрузки
CodeFest
CodeFest 2014. Симаков М. — Инфографика, как это работает
CodeFest 2014. Симаков М. — Инфографика, как это работает
CodeFest
CodeFest 2011. Ширшаков Д. — Как подружить ежа с ужом или другой взгляд на DWH
CodeFest 2011. Ширшаков Д. — Как подружить ежа с ужом или другой взгляд на DWH
CodeFest
CodeFest 2010. Иноземцев И. — Fantom. Cross-VM Language
CodeFest 2010. Иноземцев И. — Fantom. Cross-VM Language
CodeFest
CodeFest 2013. Конев М. — Push-уведомления
CodeFest 2013. Конев М. — Push-уведомления
CodeFest
CodeFest 2010. Погребняк А. — Проблемы оценки труда программистов
CodeFest 2010. Погребняк А. — Проблемы оценки труда программистов
CodeFest
CodeFest 2013. Иванов В. — Уменьшение расхода оперативной памяти в Java-прило...
CodeFest 2013. Иванов В. — Уменьшение расхода оперативной памяти в Java-прило...
CodeFest
Codefest 2011. Вольфтруб А. — О чем стоит подумать, приступая к разработке вы...
Codefest 2011. Вольфтруб А. — О чем стоит подумать, приступая к разработке вы...
CodeFest
CodeFest 2012. Рыжиков С. — Архитектура и запуск облачного сервиса в Amazon A...
CodeFest 2012. Рыжиков С. — Архитектура и запуск облачного сервиса в Amazon A...
CodeFest
Keynote: Challenges, Pains and Points of Software Development Today
Keynote: Challenges, Pains and Points of Software Development Today
CodeFest
CodeFest 2011. Крестьянинов М. — Обзор аспектно-ориентированного программиров...
CodeFest 2011. Крестьянинов М. — Обзор аспектно-ориентированного программиров...
CodeFest
CodeFest 2013. Днепровский П. — Морковка: спереди или сзади? Игровые механики...
CodeFest 2013. Днепровский П. — Морковка: спереди или сзади? Игровые механики...
CodeFest
CodeFest 2011. Токарев О — Конструирование кода: «Думай верно!» (или 5 Правил...
CodeFest 2011. Токарев О — Конструирование кода: «Думай верно!» (или 5 Правил...
CodeFest
CodeFest 2010. Горбатовский С. — Заказные проекты: как не собрать все грабли
CodeFest 2010. Горбатовский С. — Заказные проекты: как не собрать все грабли
CodeFest
CodeFest 2012. Каплинский К. — Разработка Open Source продуктов как прибыльны...
CodeFest 2012. Каплинский К. — Разработка Open Source продуктов как прибыльны...
CodeFest
CodeFest 2013. Гилев Е. — Создание пользовательского интерфейса без программи...
CodeFest 2013. Гилев Е. — Создание пользовательского интерфейса без программи...
CodeFest
CodeFest 2011. Юферев Р. — Пора задуматься о Manageability
CodeFest 2011. Юферев Р. — Пора задуматься о Manageability
CodeFest
CodeFest 2013. Прокопов Н. — Зачем вам нужна Clojure?
CodeFest 2013. Прокопов Н. — Зачем вам нужна Clojure?
CodeFest
Сверхоптимизация кода на Python
Сверхоптимизация кода на Python
CodeFest
CodeFest 2012. Ильин А. — Метрики покрытия. Прагматичный подход
CodeFest 2012. Ильин А. — Метрики покрытия. Прагматичный подход
CodeFest
CodeFest 2014. Орешкина Е. — Информационная архитектура в быту, работе и стар...
CodeFest 2014. Орешкина Е. — Информационная архитектура в быту, работе и стар...
CodeFest
CodeFest 2010. Уразов А. — Quality-Oriented Programming (Программирование, ор...
CodeFest 2010. Уразов А. — Quality-Oriented Programming (Программирование, ор...
CodeFest
CodeFest 2014. Сибирев А. — Управление инфраструктурой под Cocaine
CodeFest 2014. Сибирев А. — Управление инфраструктурой под Cocaine
CodeFest
CodeFest 2013. Агафонкин В. — Высокопроизводительные визуализации данных в бр...
CodeFest 2013. Агафонкин В. — Высокопроизводительные визуализации данных в бр...
CodeFest
CodeFest 2014. Шипилёв А. — Java Benchmarking: как два таймстампа записать!
CodeFest 2014. Шипилёв А. — Java Benchmarking: как два таймстампа записать!
CodeFest
CodeFest 2013. Русанов П. — Есть ли жизнь в оффлайне? Кеш, транзакционный лог...
CodeFest 2013. Русанов П. — Есть ли жизнь в оффлайне? Кеш, транзакционный лог...
CodeFest
Alexander Graebe
Alexander Graebe
CodeFest
Никита Прокопов
Никита Прокопов
CodeFest
Contenu connexe
En vedette
CodeFest 2013. Иванов В. — Уменьшение расхода оперативной памяти в Java-прило...
CodeFest 2013. Иванов В. — Уменьшение расхода оперативной памяти в Java-прило...
CodeFest
Codefest 2011. Вольфтруб А. — О чем стоит подумать, приступая к разработке вы...
Codefest 2011. Вольфтруб А. — О чем стоит подумать, приступая к разработке вы...
CodeFest
CodeFest 2012. Рыжиков С. — Архитектура и запуск облачного сервиса в Amazon A...
CodeFest 2012. Рыжиков С. — Архитектура и запуск облачного сервиса в Amazon A...
CodeFest
Keynote: Challenges, Pains and Points of Software Development Today
Keynote: Challenges, Pains and Points of Software Development Today
CodeFest
CodeFest 2011. Крестьянинов М. — Обзор аспектно-ориентированного программиров...
CodeFest 2011. Крестьянинов М. — Обзор аспектно-ориентированного программиров...
CodeFest
CodeFest 2013. Днепровский П. — Морковка: спереди или сзади? Игровые механики...
CodeFest 2013. Днепровский П. — Морковка: спереди или сзади? Игровые механики...
CodeFest
CodeFest 2011. Токарев О — Конструирование кода: «Думай верно!» (или 5 Правил...
CodeFest 2011. Токарев О — Конструирование кода: «Думай верно!» (или 5 Правил...
CodeFest
CodeFest 2010. Горбатовский С. — Заказные проекты: как не собрать все грабли
CodeFest 2010. Горбатовский С. — Заказные проекты: как не собрать все грабли
CodeFest
CodeFest 2012. Каплинский К. — Разработка Open Source продуктов как прибыльны...
CodeFest 2012. Каплинский К. — Разработка Open Source продуктов как прибыльны...
CodeFest
CodeFest 2013. Гилев Е. — Создание пользовательского интерфейса без программи...
CodeFest 2013. Гилев Е. — Создание пользовательского интерфейса без программи...
CodeFest
CodeFest 2011. Юферев Р. — Пора задуматься о Manageability
CodeFest 2011. Юферев Р. — Пора задуматься о Manageability
CodeFest
CodeFest 2013. Прокопов Н. — Зачем вам нужна Clojure?
CodeFest 2013. Прокопов Н. — Зачем вам нужна Clojure?
CodeFest
Сверхоптимизация кода на Python
Сверхоптимизация кода на Python
CodeFest
CodeFest 2012. Ильин А. — Метрики покрытия. Прагматичный подход
CodeFest 2012. Ильин А. — Метрики покрытия. Прагматичный подход
CodeFest
CodeFest 2014. Орешкина Е. — Информационная архитектура в быту, работе и стар...
CodeFest 2014. Орешкина Е. — Информационная архитектура в быту, работе и стар...
CodeFest
CodeFest 2010. Уразов А. — Quality-Oriented Programming (Программирование, ор...
CodeFest 2010. Уразов А. — Quality-Oriented Programming (Программирование, ор...
CodeFest
CodeFest 2014. Сибирев А. — Управление инфраструктурой под Cocaine
CodeFest 2014. Сибирев А. — Управление инфраструктурой под Cocaine
CodeFest
CodeFest 2013. Агафонкин В. — Высокопроизводительные визуализации данных в бр...
CodeFest 2013. Агафонкин В. — Высокопроизводительные визуализации данных в бр...
CodeFest
CodeFest 2014. Шипилёв А. — Java Benchmarking: как два таймстампа записать!
CodeFest 2014. Шипилёв А. — Java Benchmarking: как два таймстампа записать!
CodeFest
CodeFest 2013. Русанов П. — Есть ли жизнь в оффлайне? Кеш, транзакционный лог...
CodeFest 2013. Русанов П. — Есть ли жизнь в оффлайне? Кеш, транзакционный лог...
CodeFest
En vedette
(20)
CodeFest 2013. Иванов В. — Уменьшение расхода оперативной памяти в Java-прило...
CodeFest 2013. Иванов В. — Уменьшение расхода оперативной памяти в Java-прило...
Codefest 2011. Вольфтруб А. — О чем стоит подумать, приступая к разработке вы...
Codefest 2011. Вольфтруб А. — О чем стоит подумать, приступая к разработке вы...
CodeFest 2012. Рыжиков С. — Архитектура и запуск облачного сервиса в Amazon A...
CodeFest 2012. Рыжиков С. — Архитектура и запуск облачного сервиса в Amazon A...
Keynote: Challenges, Pains and Points of Software Development Today
Keynote: Challenges, Pains and Points of Software Development Today
CodeFest 2011. Крестьянинов М. — Обзор аспектно-ориентированного программиров...
CodeFest 2011. Крестьянинов М. — Обзор аспектно-ориентированного программиров...
CodeFest 2013. Днепровский П. — Морковка: спереди или сзади? Игровые механики...
CodeFest 2013. Днепровский П. — Морковка: спереди или сзади? Игровые механики...
CodeFest 2011. Токарев О — Конструирование кода: «Думай верно!» (или 5 Правил...
CodeFest 2011. Токарев О — Конструирование кода: «Думай верно!» (или 5 Правил...
CodeFest 2010. Горбатовский С. — Заказные проекты: как не собрать все грабли
CodeFest 2010. Горбатовский С. — Заказные проекты: как не собрать все грабли
CodeFest 2012. Каплинский К. — Разработка Open Source продуктов как прибыльны...
CodeFest 2012. Каплинский К. — Разработка Open Source продуктов как прибыльны...
CodeFest 2013. Гилев Е. — Создание пользовательского интерфейса без программи...
CodeFest 2013. Гилев Е. — Создание пользовательского интерфейса без программи...
CodeFest 2011. Юферев Р. — Пора задуматься о Manageability
CodeFest 2011. Юферев Р. — Пора задуматься о Manageability
CodeFest 2013. Прокопов Н. — Зачем вам нужна Clojure?
CodeFest 2013. Прокопов Н. — Зачем вам нужна Clojure?
Сверхоптимизация кода на Python
Сверхоптимизация кода на Python
CodeFest 2012. Ильин А. — Метрики покрытия. Прагматичный подход
CodeFest 2012. Ильин А. — Метрики покрытия. Прагматичный подход
CodeFest 2014. Орешкина Е. — Информационная архитектура в быту, работе и стар...
CodeFest 2014. Орешкина Е. — Информационная архитектура в быту, работе и стар...
CodeFest 2010. Уразов А. — Quality-Oriented Programming (Программирование, ор...
CodeFest 2010. Уразов А. — Quality-Oriented Programming (Программирование, ор...
CodeFest 2014. Сибирев А. — Управление инфраструктурой под Cocaine
CodeFest 2014. Сибирев А. — Управление инфраструктурой под Cocaine
CodeFest 2013. Агафонкин В. — Высокопроизводительные визуализации данных в бр...
CodeFest 2013. Агафонкин В. — Высокопроизводительные визуализации данных в бр...
CodeFest 2014. Шипилёв А. — Java Benchmarking: как два таймстампа записать!
CodeFest 2014. Шипилёв А. — Java Benchmarking: как два таймстампа записать!
CodeFest 2013. Русанов П. — Есть ли жизнь в оффлайне? Кеш, транзакционный лог...
CodeFest 2013. Русанов П. — Есть ли жизнь в оффлайне? Кеш, транзакционный лог...
Plus de CodeFest
Alexander Graebe
Alexander Graebe
CodeFest
Никита Прокопов
Никита Прокопов
CodeFest
Денис Баталов
Денис Баталов
CodeFest
Елена Гальцина
Елена Гальцина
CodeFest
Александр Калашников
Александр Калашников
CodeFest
Ирина Иванова
Ирина Иванова
CodeFest
Marko Berković
Marko Berković
CodeFest
Денис Кортунов
Денис Кортунов
CodeFest
Александр Зимин
Александр Зимин
CodeFest
Сергей Крапивенский
Сергей Крапивенский
CodeFest
Сергей Игнатов
Сергей Игнатов
CodeFest
Николай Крапивный
Николай Крапивный
CodeFest
Alexander Graebe
Alexander Graebe
CodeFest
Вадим Смирнов
Вадим Смирнов
CodeFest
Константин Осипов
Константин Осипов
CodeFest
Raffaele Rialdi
Raffaele Rialdi
CodeFest
Максим Пугачев
Максим Пугачев
CodeFest
Rene Groeschke
Rene Groeschke
CodeFest
Иван Бондаренко
Иван Бондаренко
CodeFest
Mete Atamel
Mete Atamel
CodeFest
Plus de CodeFest
(20)
Alexander Graebe
Alexander Graebe
Никита Прокопов
Никита Прокопов
Денис Баталов
Денис Баталов
Елена Гальцина
Елена Гальцина
Александр Калашников
Александр Калашников
Ирина Иванова
Ирина Иванова
Marko Berković
Marko Berković
Денис Кортунов
Денис Кортунов
Александр Зимин
Александр Зимин
Сергей Крапивенский
Сергей Крапивенский
Сергей Игнатов
Сергей Игнатов
Николай Крапивный
Николай Крапивный
Alexander Graebe
Alexander Graebe
Вадим Смирнов
Вадим Смирнов
Константин Осипов
Константин Осипов
Raffaele Rialdi
Raffaele Rialdi
Максим Пугачев
Максим Пугачев
Rene Groeschke
Rene Groeschke
Иван Бондаренко
Иван Бондаренко
Mete Atamel
Mete Atamel
CodeFest 2012. Иванов В. — G1: новый сборщик мусора в HotSpot JVM
1.
1
Copyright © 2012, Oracle and/or its affiliates. All rights 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 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 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 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 reserved.
7.
Сборка мусора с
поколениями • Слабая гипотеза о поколениях • Большинство объектов временные • Старые объекты редко ссылаются на молодые • Молодые и старые объекты содержатся отдельно • В пространствах, называемых “поколения” (generations) • Возможны разные алгоритмы для молодого и старого поколения • Mолодое поколение можно собирать отдельно от старого 7 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
8.
Сборка мусора с
поколениями Создание объекта Необходимо отслеживать ссылки Молодое поколение Перемещение объекта Старшее поколение 8 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
9.
Структура молодого поколения 9
Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
10.
Молодое поколение: сборка
мусора 10 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
11.
Молодое поколение: сборка
мусора 11 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
12.
Содержание
• Основы сборки мусора • G1: обзор архитектуры • Миграция на G1 12 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
13.
Garbage-First GC (G1)
• Фоновый и параллельный • Высокая предсказуемость работы • Сборщик мусора с поколениями, но … • «Куча» состоит из регионов • Нет физического разделения между молодым и старым поколением • Принадлежность регионов определяется динамически • Для каждого региона известно где находятся объекты, ссылающиеся на него • “Remembered Set” • Позволяет собирать регионы независимо 13 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
14.
G1: Структура «кучи»
• Разбита на регионы • Фиксированного размера • 1MB-32MB 14 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
15.
G1: Структура «кучи»
• Молодое поколение • Набор регионов E E • Eden S • Survivor E E • Выбираются динамически S E E 15 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
16.
G1: Структура «кучи»
• Старое поколение • Набор регионов E E • Выбираются динамически S E E S E E 16 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
17.
G1: Структура «кучи»
H • Большие объекты • Не помещается в регион E E • Называются “humongous” S • Находятся в наборе E E смежных регионов S E H E H 17 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
18.
G1: Структура «кучи»
H • Collection Set • Регионы, в которых будет происходить GC S • Все молодое поколение • Некоторые регионы из старшего поколения S • Фоновая маркировка определяет наиболее H подходящие H 18 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
19.
G1: Структура «кучи»
H • Сборка • Копирование объектов в регионы, помеченные как S часть «To»-пространства • Survivor-регионы • Регионы из старшего S поколения H H S 19 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
20.
G1: Структура «кучи»
H • Reclamation • From-space larger than to- space (hopefully!) • Compaction via copying H H S 20 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
21.
G1: Структура «кучи»
H • RSet == Remembered Set • Информация о местонахождении ссылок на регион • Позволяет собирать регионы RS независимо • RSet поддерживается H • Из старого в молодое поколение RS • Между регионами в старом E поколении H S 21 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
22.
G1: Фоновая маркировка
• Периодически все живые объекты в куче помечаются • обновляет информацию о достижимости по регионам • автоматически освобождает регионы без живых объектов • разбивает циклические зависимости среди недостижимых объектов • Параллельная и фоновая • Стартует автоматически по достижении пороговой занятости «кучи» 22 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
23.
Барьер на запись
• Код, исполняемый при изменении значения поля объекта с указателем • Специфичен для каждого GC • Абсолютно прозрачен для приложения • Исполняется интерпретатором / генерируется JIT-компилятором • Пример (для обновления card table): a.f = x; a.f = x; card_table[index_for(&a.f)] = DIRTY_VALUE; 23 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
24.
G1: Барьеры на
запись • 2 типа • Pre-barrier • Сохраняет старое значение поля • Поддерживается корректность фоновой маркировки • SATB (Snapshot-At-The-Beginning) • Post-barrier • Поддержка актуальности RSet • Результат сохраняется в буферы, локальные для потока • В процессе фоновой сборки происходит обработка 24 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
25.
G1: Как включить?
• -XX:+UseG1GC • -Xms/-Xmx • Задаваемые цели на длительность и частоту пауз • -XX:MaxGCPauseMillis=<num> • -XX:GCPauseIntervalMillis=<num> 25 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
26.
Содержание
• Основы сборки мусора • G1: обзор архитектуры • Миграция на G1 26 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
27.
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 27 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
28.
GC в Hotspot
JVM • SerialGC • последовательная сборка молодого и старого поколений • ParallelGC • максимальный throughput • параллельная сборка молодого и старого поколений • CMS • предсказуемость • по возможности, сборка мусора в фоновом режиме • G1 • предсказуемость • слабо подвержен фрагментации 28 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
29.
Производительность GC
• 3 характеристики • Throughput • Объем вычислительных ресурсов, затрачиваемых на GC • Предсказуемость • На какое время прерывается работа приложения • Footprint • Объем используемой памяти 29 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
30.
Производительность GC
Throughput Latency Footprint = 30 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
31.
Чем хорош Stop-The-World
GC? • Проще всего определять достижимость объектов • Граф объектов «заморожен» • Проще всего перемещать объекты в «куче» • В процессе сборки, «куча» может находиться в некорректном состоянии • Но: • Приложение останавливается на все время сборки • зависит от размера «кучи» / объема живых объектов 31 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
32.
Инкрементальная сборка
• Попытка уменьшить паузы, вызванные GC, за счет • Большего количества коротких пауз • Фоновая сборка • Требуется синхронизировать работу GC с приложением • Барьеры на чтение/запись 32 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
33.
Предсказуемость vs Throughput
• STW • Продолжительные паузы • … но никакой лишней нагрузки для потоков приложения • Максимальный throughput • Инкрементальная сборка • Короткие паузы • Лишняя нагруза в потоках приложения • Минимальные паузы за счет снижения throughput • “Über GC” не существует 33 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
34.
G1 рекомендуется, если…
• Нужна хорошая производительность • Минимальная настройка • Размер «кучи» >2-4Gb • Занятость «кучи» >50% • Продолжительность пауз (<0.5-1s) • Скорость создания объектов серьезно варьируется • Фрагментация «кучи» 34 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
35.
G1 НЕ рекомендуется,
если • Приложение уже работает надежно без серьезных проблем с производительностью • “If it isn't broken, don't fix it!” • Жесткие требования на паузы <100мс 35 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
36.
Как выбирать GC?
1. ParallelGC Паузы не устраивают 2. G1 Подходит? Да! DONE! Паузы все еще не устраивают «Куча» <2Gb 3. CMS 36 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
37.
Q&A 37
Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
38.
38
Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
39.
39
Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Télécharger maintenant