Spec-Zone.ru › OpenJDK 25

Класс SoftReference<T>

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

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

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

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

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

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

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

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

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

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

clear, clone, enqueue, isEnqueued, reachabilityFence, refersTo

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

equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

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

SoftReference

public SoftReference(T referent)
Создает новую мягкую ссылку на заданный объект. Новая ссылка не регистрируется ни в одной очереди.
Параметры:
referent — объект, на который будет ссылаться новая мягкая ссылка

SoftReference

public SoftReference(T referent, ReferenceQueue<? super T> q)
Создает новую мягкую ссылку на заданный объект и регистрирует ее в заданной очереди.
Параметры:
referent — объект, на который будет ссылаться новая мягкая ссылка
q — очередь, в которой должна быть зарегистрирована ссылка, или null, если регистрация не требуется

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

get

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

Сообщить об ошибке или предложить улучшение
Дополнительную справочную информацию по API и документацию для разработчиков см. в документации Java SE, содержащей более подробные описания для разработчиков, обзоры концепций, определения терминов, обходные решения и примеры работающего кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или ее аффилированных лиц в США и других странах.
Авторское право © 1993, 2025, 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.
https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/ref/SoftReference.html

Spec-Zone.ru

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