JEP 132: More-prompt finalization
Более своевременная финализация
| Ответственный | Jon Masamitsu |
| Тип | Feature |
| Область | JDK |
| Статус | Closed / Withdrawn |
| Обсуждение | hostspot dash dev at openjdk dot java dot net |
| Трудоёмкость | S |
| Длительность | S |
| Рецензенты | Paul Hohensee |
| Одобрен | Brian Goetz, Paul Hohensee |
| Создан | 2011/08/09 20:00 |
| Обновлён | 2019/10/09 19:05 |
| Задача | 8046122 |
Аннотация
Повысить своевременность финализации за счёт использования нескольких потоков финализатора и/или активного управления очередью финализатора, а также определить Java API, с помощью которого приложение сможет запросить выполнение обработки ссылок.
Что не является целью
Улучшение управления нативными ресурсами не является целью этого проекта. Пользователи могут обнаружить, что более своевременная финализация помогает управлять нативными ресурсами, но это будет зависеть от конкретного приложения.
Критерии успеха
Подробности пока не определены, но в целом стресс-тест финализации должен показывать более своевременную финализацию, чем без этого проекта. Существуют стресс-тесты финализации для JRockit, которые Hotspot в целом не проходит, но должен будет проходить, когда этот проект будет интегрирован.
Мотивация
Клиенты просили о более своевременной финализации. Эта работа не удовлетворит всех клиентов, но должна удовлетворить большее их число.
Описание
Может потребоваться более интенсивное управление финализацией (перемещение объектов из очереди финализации в большем количестве). Изучить обработку финализации в JRockit. Сюда входит возможное изменение реализации ReferenceHandleThread, FinalizerThread и java.lang.ref.Reference в библиотеке JDK.
При запросе финализации могут добавляться дополнительные потоки финализации.
Определить новый Java API, который будет сообщать сборщику мусора и среде выполнения, что следует выполнить финализацию. Реализовать действия со стороны сборщика мусора и среды выполнения, ускоряющие финализацию. Например, объекты, подлежащие финализации, обнаруживаются во время сборки мусора, поэтому может потребоваться сборка мусора.
Альтернативы
Рассказать пользователям об альтернативах финализации.
Тестирование
Потребуются тесты, которые создают много объектов, подлежащих финализации, и выводят число финализированных объектов. Такие тесты есть в ночном тестировании Hotspot, и аналогичные тесты существуют для JRockit. Для стресс-тестирования этой возможности могут потребоваться некоторые изменения. Даже с этой возможностью финализация останется недетерминированной, и это следует учитывать при оценке того, пройден тест или нет.
Риски и допущения
Если финализация будет удалена из языка Java, этот проект не понадобится.
Влияние
- Производительность/масштабируемость: изменений быть не должно, либо должно быть улучшение
- Документация: может потребоваться некоторая документация для лицензиатов