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

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, этот проект не понадобится.

Влияние

  • Производительность/масштабируемость: изменений быть не должно, либо должно быть улучшение
  • Документация: может потребоваться некоторая документация для лицензиатов