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, и после этого изменения такой сборщик придётся указывать явно.