Spec-Zone.ru › OpenJDK 8

Класс 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, enqueue, isEnqueued

Методы, унаследованные от класса java.lang.Object

clone, 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 если эта ссылка была очищена

© 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.

Spec-Zone.ru

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