Spec-Zone.ru › OpenJDK 27

Класс PhantomReference<T>

java.lang.Object
java.lang.ref.Reference<T>
java.lang.ref.PhantomReference<T>
Параметры типа:
T — тип референта
public non-sealed class PhantomReference<T> extends Reference<T>
Объекты фантомных ссылок, помещаемые в очередь после того, как сборщик мусора определит, что их референты могут быть освобождены. Фантомные ссылки чаще всего используются для планирования действий по очистке после завершения работы с объектом.

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

Чтобы гарантировать, что объект, подлежащий освобождению, останется таковым, референт фантомной ссылки нельзя получить: метод get фантомной ссылки всегда возвращает null. Метод refersTo можно использовать, чтобы проверить, является ли некоторый объект референтом фантомной ссылки.

Начиная с версии:
1.2

Краткое описание конструкторов

Конструктор Описание
PhantomReference(T referent, ReferenceQueue<? super T> q)
Создаёт новую фантомную ссылку на указанный объект и регистрирует её в указанной очереди.

Краткое описание методов

Модификатор и тип Метод Описание
T get()
Возвращает референт этого объекта-ссылки.

Методы, объявленные в классе Reference

clear, clone, enqueue, isEnqueued, reachabilityFence, refersTo
Модификатор и тип Метод Описание
void clear()
Очищает этот объект-ссылку.
protected Object clone()
Выбрасывает исключение CloneNotSupportedException.
boolean enqueue()
Очищает этот объект-ссылку, а затем пытается добавить его в очередь, в которой он зарегистрирован, если таковая имеется.
boolean isEnqueued()
Устарело.
Изначально этот метод предназначался для проверки того, был ли объект-ссылка очищен и помещён в очередь, но такая проверка никогда не была реализована.
static void reachabilityFence(Object ref)
Гарантирует, что указанный объект останется сильно достижимым.
final boolean refersTo(T obj)
Проверяет, является ли референт этого объекта-ссылки obj.

Методы, объявленные в классе Object

equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Модификатор и тип Метод Описание
boolean equals(Object obj)
Указывает, равен ли этот объект какому-либо другому объекту.
protected void finalize()
Устарело, будет удалено: этот элемент API подлежит удалению в будущей версии.
Финализация устарела и подлежит удалению в одном из будущих выпусков.
final Class<?> getClass()
Возвращает класс времени выполнения этого Object.
int hashCode()
Возвращает значение хеш-кода этого объекта.
final void notify()
Пробуждает один поток, ожидающий на мониторе этого объекта.
final void notifyAll()
Пробуждает все потоки, ожидающие на мониторе этого объекта.
String toString()
Возвращает строковое представление объекта.
final void wait()
Переводит текущий поток в состояние ожидания до его пробуждения, обычно посредством уведомления или прерывания.
final void wait(long timeoutMillis)
Переводит текущий поток в состояние ожидания до его пробуждения, обычно посредством уведомления или прерывания, либо до истечения заданного промежутка реального времени.
final void wait(long timeoutMillis, int nanos)
Переводит текущий поток в состояние ожидания до его пробуждения, обычно посредством уведомления или прерывания, либо до истечения заданного промежутка реального времени.

Подробное описание конструкторов

PhantomReference

public PhantomReference(T referent, ReferenceQueue<? super T> q)
Создаёт новую фантомную ссылку на указанный объект и регистрирует её в указанной очереди.

Можно создать фантомную ссылку с очередью null. Такая ссылка никогда не будет помещена в очередь.

Параметры:
referent — объект, на который будет ссылаться новая фантомная ссылка
q — очередь, в которой следует зарегистрировать ссылку, или null, если регистрация не требуется

Подробное описание методов

get

public T get()
Возвращает референт этого объекта-ссылки. Поскольку референт фантомной ссылки всегда недоступен, этот метод всегда возвращает null.
Переопределяет:
get в классе Reference<T>
Возвращает:
null
См. также:
  • Reference.refersTo(T)

Сообщить об ошибке или предложить улучшение
Дополнительную справочную информацию по API и документацию для разработчиков см. в разделе Документация Java SE, содержащем более подробные описания для разработчиков, обзоры концепций, определения терминов, обходные решения и примеры работающего кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или её аффилированных лиц в США и других странах.
Авторские права © 1993, 2026, Oracle и/или её аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 1993, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API