Класс 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 Методы, объявленные в классе 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.
© 1993, 2020, 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/11/docs/api/java.base/java/lang/ref/SoftReference.html