Spec-Zone.ru › OpenJDK 17

Класс SoftReference<T>

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

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

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

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

Since:
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.
Overrides:
get в классе Reference<T>
Возвращает:
Объект, на который ссылается эта ссылка, или null если объект ссылки был очищен
См. также:
  • Reference.refersTo(T)

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

Spec-Zone.ru

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