Spec-Zone.ru › OpenJDK 21

Класс SoftReference<T>

java.lang.Object
java.lang.ref.Reference<T>
java.lang.ref.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()
Возвращает ссылаемый объект этой ссылки.

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

clear, clone, enqueue, isEnqueued, reachabilityFence, refersTo

Методы, объявленные в классе java.lang.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)

© 1993, 2023, 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/21/docs/api/java.base/java/lang/ref/SoftReference.html

Spec-Zone.ru

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