Your SlideShare is downloading. ×
CodeFest 2012. Иванов В. — G1: новый сборщик мусора в HotSpot JVM
CodeFest 2012. Иванов В. — G1: новый сборщик мусора в HotSpot JVM
CodeFest 2012. Иванов В. — G1: новый сборщик мусора в HotSpot JVM
CodeFest 2012. Иванов В. — G1: новый сборщик мусора в HotSpot JVM
CodeFest 2012. Иванов В. — G1: новый сборщик мусора в HotSpot JVM
CodeFest 2012. Иванов В. — G1: новый сборщик мусора в HotSpot JVM
CodeFest 2012. Иванов В. — G1: новый сборщик мусора в HotSpot JVM
CodeFest 2012. Иванов В. — G1: новый сборщик мусора в HotSpot JVM
CodeFest 2012. Иванов В. — G1: новый сборщик мусора в HotSpot JVM
CodeFest 2012. Иванов В. — G1: новый сборщик мусора в HotSpot JVM
CodeFest 2012. Иванов В. — G1: новый сборщик мусора в HotSpot JVM
CodeFest 2012. Иванов В. — G1: новый сборщик мусора в HotSpot JVM
CodeFest 2012. Иванов В. — G1: новый сборщик мусора в HotSpot JVM
CodeFest 2012. Иванов В. — G1: новый сборщик мусора в HotSpot JVM
CodeFest 2012. Иванов В. — G1: новый сборщик мусора в HotSpot JVM
CodeFest 2012. Иванов В. — G1: новый сборщик мусора в HotSpot JVM
CodeFest 2012. Иванов В. — G1: новый сборщик мусора в HotSpot JVM
CodeFest 2012. Иванов В. — G1: новый сборщик мусора в HotSpot JVM
CodeFest 2012. Иванов В. — G1: новый сборщик мусора в HotSpot JVM
CodeFest 2012. Иванов В. — G1: новый сборщик мусора в HotSpot JVM
CodeFest 2012. Иванов В. — G1: новый сборщик мусора в HotSpot JVM
CodeFest 2012. Иванов В. — G1: новый сборщик мусора в HotSpot JVM
CodeFest 2012. Иванов В. — G1: новый сборщик мусора в HotSpot JVM
CodeFest 2012. Иванов В. — G1: новый сборщик мусора в HotSpot JVM
CodeFest 2012. Иванов В. — G1: новый сборщик мусора в HotSpot JVM
CodeFest 2012. Иванов В. — G1: новый сборщик мусора в HotSpot JVM
CodeFest 2012. Иванов В. — G1: новый сборщик мусора в HotSpot JVM
CodeFest 2012. Иванов В. — G1: новый сборщик мусора в HotSpot JVM
CodeFest 2012. Иванов В. — G1: новый сборщик мусора в HotSpot JVM
CodeFest 2012. Иванов В. — G1: новый сборщик мусора в HotSpot JVM
CodeFest 2012. Иванов В. — G1: новый сборщик мусора в HotSpot JVM
CodeFest 2012. Иванов В. — G1: новый сборщик мусора в HotSpot JVM
CodeFest 2012. Иванов В. — G1: новый сборщик мусора в HotSpot JVM
CodeFest 2012. Иванов В. — G1: новый сборщик мусора в HotSpot JVM
CodeFest 2012. Иванов В. — G1: новый сборщик мусора в HotSpot JVM
CodeFest 2012. Иванов В. — G1: новый сборщик мусора в HotSpot JVM
CodeFest 2012. Иванов В. — G1: новый сборщик мусора в HotSpot JVM
CodeFest 2012. Иванов В. — G1: новый сборщик мусора в HotSpot JVM
CodeFest 2012. Иванов В. — G1: новый сборщик мусора в HotSpot JVM
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

CodeFest 2012. Иванов В. — G1: новый сборщик мусора в HotSpot JVM

985

Published on

0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
985
On Slideshare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
20
Comments
0
Likes
2
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. 1 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 2. G1GC: Garbage-First Garbage Collector Владимир Иванов Oracle Corporation2 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. vladimir.x.ivanov@oracle.com
  • 3. Содержание • Основы сборки мусора • G1: обзор архитектуры • Миграция на G13 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: обзор архитектуры • Миграция на G112 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-32MB14 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 15. G1: Структура «кучи» • Молодое поколение • Набор регионов E E • Eden S • Survivor E E • Выбираются динамически S E E15 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 16. G1: Структура «кучи» • Старое поколение • Набор регионов E E • Выбираются динамически S E E S E E16 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 17. G1: Структура «кучи» H • Большие объекты • Не помещается в регион E E • Называются “humongous” S • Находятся в наборе E E смежных регионов S E H E H17 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 18. G1: Структура «кучи» H • Collection Set • Регионы, в которых будет происходить GC S • Все молодое поколение • Некоторые регионы из старшего поколения S • Фоновая маркировка определяет наиболее H подходящие H18 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 19. G1: Структура «кучи» H • Сборка • Копирование объектов в регионы, помеченные как S часть «To»-пространства • Survivor-регионы • Регионы из старшего S поколения H H S19 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 S20 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 21. G1: Структура «кучи» H • RSet == Remembered Set • Информация о местонахождении ссылок на регион • Позволяет собирать регионы RS независимо • RSet поддерживается H • Из старого в молодое поколение RS • Между регионами в старом E поколении H S21 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: обзор архитектуры • Миграция на G126 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 27. GCs в Hotspot JVM GC Framework GC Interface Parallel / Serial Parallel Serial Parallel ConcurrentYoung DefNew ParNew PScavenge GenOld Tenured CMS PSOld PSParOldGenWhole G1Heap 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 isnt broken, dont fix it!” • Жесткие требования на паузы <100мс35 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 36. Как выбирать GC? 1. ParallelGC Паузы не устраивают 2. G1 Подходит? Да! DONE! Паузы все еще не устраивают «Куча» <2Gb 3. CMS36 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 37. Q&A37 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.

×