openjdk.ruOpenJDK на русском

JEP 248: Make G1 the Default Garbage Collector

Сделать G1 сборщиком мусора по умолчанию

ОтветственныйStefan Johansson
ТипFeature
ОбластьJDK
СтатусClosed / Delivered
Выпуск9
Компонентhotspot / gc
Обсуждениеhotspot dash dev at openjdk dot java dot net
ТрудоёмкостьM
ДлительностьM
Связан сJEP 523: Make G1 the Default Garbage Collector in All Environments
РецензентыMikael Vidstedt
ОдобренMikael Vidstedt
Создан2015/02/16 19:58
Обновлён2025/09/09 17:33
Задача8073273

Аннотация

Сделать G1 сборщиком мусора по умолчанию в 32- и 64-битных серверных конфигурациях.

Мотивация

Ограничивать время пауз GC, как правило, важнее, чем добиваться максимальной пропускной способности. Для большинства пользователей переход на сборщик с короткими паузами, такой как G1, в целом должен дать лучший результат, чем сборщик, ориентированный на пропускную способность, такой как Parallel GC, который сейчас используется по умолчанию.

В JDK 8 и его обновлениях производительность G1 была во многом улучшена, и новые улучшения запланированы для JDK 9. С появлением конкурентной выгрузки классов (JEP 156) в JDK 8u40 G1 стал полнофункциональным сборщиком мусора, готовым стать сборщиком по умолчанию.

Описание

Сменить сборщик по умолчанию несложно.

Риски и допущения

  • Изменение основано на допущении, что ограничивать задержку часто важнее, чем добиваться максимальной пропускной способности. Если это допущение неверно, изменение, возможно, придётся пересмотреть.

  • G1 считается надёжным и хорошо протестированным сборщиком. Проблем со стабильностью не ожидается, но как сборщик по умолчанию он будет больше на виду, и это может выявить ранее неизвестные проблемы. Если обнаружится критическая проблема, которую не удастся устранить в сроки JDK 9, мы вернёмся к Parallel GC как сборщику по умолчанию для GA-выпуска JDK 9.

  • G1 потребляет ресурсы иначе, чем Parallel. Когда накладные расходы на ресурсы нужно свести к минимуму, следует использовать сборщик, отличный от G1, и после этого изменения такой сборщик придётся указывать явно.