Spec-Zone .ru
спецификации, руководства, описания, API
 Платформа Java™
Стандарт Эд. 7

Пакет java.lang.ref

Обеспечивает ссылочные классы объектов, которые поддерживают ограниченный уровень взаимодействия со сборщиком "мусора".

См.: Описание

Пакет java.lang.ref Описание

Обеспечивает ссылочные классы объектов, которые поддерживают ограниченный уровень взаимодействия со сборщиком "мусора". Программа может использовать ссылочный объект поддержать ссылку на некоторый другой объект таким способом, которым последний объект может все еще быть исправлен коллектором. Программа может также расположить быть уведомленной некоторое время после того, как коллектор решил, что достижимость данного объекта изменилась.

Спецификация пакета

Ссылочный объект инкапсулирует ссылку на некоторый другой объект так, чтобы сама ссылка могла быть исследована и управляться как любой другой объект. Три типа ссылочных объектов обеспечиваются, каждый более слабый чем последнее: мягкий, слабый, и фантом. Каждый тип соответствует различному уровню достижимости, как определено ниже. Мягкие ссылки для того, чтобы реализовать чувствительные к памяти кэши, слабые ссылки для того, чтобы реализовать отображения канонизации, которые не предотвращают их ключи (или значения) от того, чтобы быть исправленным, и фантомные ссылки для того, чтобы запланировать pre-mortem действия уборки более гибким способом, чем возможно с механизмом завершения Java.

Каждый ссылочно-объектный тип реализуется подклассом абстрактной основы Reference класс. Экземпляр одного из этих подклассов инкапсулирует единственную ссылку на определенный объект, названный референтом. Каждый ссылочный объект обеспечивает методы для получения и очистки ссылки. Кроме очистки ссылочные объекты работы являются иначе неизменными, таким образом, нет set работа обеспечивается. Программа может далее разделить эти подклассы на подклассы, добавляя любые поля, и методы требуются в ее целях, или она может использовать эти подклассы без изменения.

Уведомление

Программа может запросить быть уведомленной относительно изменений в достижимости объекта, регистрируя соответствующий ссылочный объект со ссылочной очередью в то время, когда ссылочный объект создается. Некоторое время после сборщика "мусора" решает, что достижимость референта изменилась на значение, соответствующее типу ссылки, это добавит ссылку на связанную очередь. В этой точке ссылка, как полагают, ставится в очередь. Программа может удалить ссылки из очереди или опрашивая или блокируя, пока ссылка не становится доступной. Ссылочные очереди реализуются ReferenceQueue класс.

Отношение между зарегистрированным ссылочным объектом и его очередью является односторонним. Таким образом, очередь не отслеживает ссылки, которые регистрируются в ней. Если зарегистрированная ссылка станет недостижимой непосредственно, то она никогда не будет ставиться в очередь. Это - ответственность программы, используя ссылочные объекты гарантировать, что объекты остаются достижимыми столько, сколько программа интересуется их референтами.

В то время как некоторые программы будут хотеть выделять поток удалению ссылочных объектов от одной или более очередей и обработки их, это ни в коем случае не необходимо. Тактика, которая часто работает хорошо, должна исследовать ссылочную очередь в ходе выполнения некоторого другого справедливо частого действия. Например, хеш-таблица, которая использует слабые ссылки, чтобы реализовать слабые ключи, могла опросить свою ссылочную очередь каждый раз, когда к таблице получают доступ. Это то, как WeakHashMap работы класса. Поскольку ReferenceQueue.poll метод просто проверяет внутреннюю структуру данных, эта проверка добавит небольшие издержки к методам доступа хеш-таблицы.

Автоматически очищенные ссылки

Мягкие и слабые ссылки автоматически очищаются коллектором прежде, чем быть добавленным к очередям, в которых они регистрируются, если любой. Поэтому мягкие и слабые ссылки не должны быть зарегистрированы в очереди, чтобы быть полезными, в то время как фантомные ссылки делают. Объект, который достижим через фантомные ссылки, останется так, пока все такие ссылки не будут очищены, или они непосредственно становятся недостижимыми.

Достижимость

Идя от самого сильного до самого слабого, разные уровни достижимости отражают жизненный цикл объекта. Они оперативно определяются следующим образом:
С тех пор:
1.2 For overviews, tutorials, examples, guides, and tool documentation, please see: -->
 Платформа Java™
Стандарт Эд. 7

Представьте ошибку или функцию
Для дальнейшей ссылки API и документации разработчика, см. Java Документация SE. Та документация содержит более подробные, предназначенные разработчиком описания, с концептуальными краткими обзорами, определениями сроков, обходных решений, и рабочих примеров кода.
Авторское право © 1993, 2011, Oracle и/или его филиалы. Все права защищены.