Класс SoftReference<T>
public class SoftReference<T> extends Reference<T>
Предположим, что сборщик мусора в определенный момент времени определил, что объект является мягко достижимым. В этот момент он может выбрать атомарно очистить все мягкие ссылки на этот объект и все мягкие ссылки на любые другие мягко достижимые объекты, от которых этот объект достижим через цепочку сильных ссылок. В то же время или позднее он добавит в очередь эти вновь очищенные мягкие ссылки, которые зарегистрированы в очередях ссылок.
Все мягкие ссылки на мягко достижимые объекты гарантированно будут очищены перед тем, как виртуальная машина выбросит OutOfMemoryError. В противном случае никакие ограничения не накладываются на время, в которое мягкая ссылка будет очищена, или порядок, в котором набор таких ссылок на разные объекты будет очищен. Тем не менее, виртуальным машинам рекомендуется отдавать предпочтение не очищению недавно созданных или недавно используемых мягких ссылок.
Прямые экземпляры этого класса могут быть использованы для реализации простых кешей; этот класс или производные подклассы также могут использоваться в более крупных структурах данных для реализации более сложных кешей. Пока референт мягкой ссылки является сильно достижимым, то есть фактически используется, мягкая ссылка не будет очищена. Таким образом, сложный кеш, например, может предотвратить удаление своих самых недавно используемых элементов, сохраняя сильные ссылки на эти элементы, оставляя оставшиеся элементы на усмотрение сборщика мусора.
- Since:
- 1.2
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
SoftReference |
Создаёт новую мягкую ссылку, которая ссылается на указанный объект. |
SoftReference |
Создаёт новую мягкую ссылку, которая ссылается на указанный объект и зарегистрирована в указанной очереди. |
Краткое описание методов
Методы, объявленные в классе java.lang.ref.Reference
clear, clone, enqueue, isEnqueued, reachabilityFence, refersTo
Подробное описание конструкторов
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если объект ссылки был очищен - См. также:
© 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