Spec-Zone.ru › OpenJDK 24

Класс 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, 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://download.java.net/java/early_access/jdk24/docs/api/java.base/java/lang/ref/SoftReference.html

Spec-Zone.ru

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