WeakReference
open class WeakReference<T : Any!> : Reference<T>
Weak reference objects, which do not prevent their referents from being made finalizable, finalized, and then reclaimed. Weak references are most often used to implement canonicalizing mappings.
Suppose that the garbage collector determines at a certain point in time that an object is weakly reachable. At that time it will atomically clear all weak references to that object and all weak references to any other weakly-reachable objects from which that object is reachable through a chain of strong and soft references. At the same time it will declare all of the formerly weakly-reachable objects to be finalizable. At the same time or at some later time it will enqueue those newly-cleared weak references that are registered with reference queues.
Summary
| Public constructors |
|
Creates a new weak reference that refers to the given object.
|
|
Creates a new weak reference that refers to the given object and is registered with the given queue.
|
| Inherited functions |
From class Reference
Unit |
clear()
Clears this reference object. Invoking this method will not cause this object to be enqueued.
This method is invoked only by Java code; when the garbage collector clears references it does so directly, without invoking this method.
|
Boolean |
enqueue()
Adds this reference object to the queue with which it is registered, if any.
This method is invoked only by Java code; when the garbage collector enqueues references it does so directly, without invoking this method.
|
T? |
get()
Returns this reference object's referent. If this reference object has been cleared, either by the program or by the garbage collector, then this method returns null.
|
Boolean |
isEnqueued()
Tells whether or not this reference object has been enqueued, either by the program or by the garbage collector. If this reference object was not registered with a queue when it was created, then this method will always return false.
|
Unit |
reachabilityFence(ref: Any!)
Ensures that the object referenced by the given reference remains strongly reachable, regardless of any prior actions of the program that might otherwise cause the object to become unreachable; thus, the referenced object is not reclaimable by garbage collection at least until after the invocation of this method. Invocation of this method does not itself initiate garbage collection or finalization.
This method establishes an ordering for strong reachability with respect to garbage collection. It controls relations that are otherwise only implicit in a program -- the reachability conditions triggering garbage collection. This method is designed for use in uncommon situations of premature finalization where using synchronized blocks or methods, or using other synchronization facilities are not possible or do not provide the desired control. This method is applicable only when reclamation may have visible effects, which is possible for objects with finalizers (See Section 12.6 17 of The Java™ Language Specification) that are implemented in ways that rely on ordering control for correctness.
|
|
Public constructors
<init>
WeakReference(referent: T)
Creates a new weak reference that refers to the given object. The new reference is not registered with any queue.
| Parameters |
referent |
T: object the new weak reference will refer to |
<init>
WeakReference(
referent: T,
q: ReferenceQueue<in T>!)
Creates a new weak reference that refers to the given object and is registered with the given queue.
| Parameters |
referent |
T: object the new weak reference will refer to |
q |
ReferenceQueue<in T>!: the queue with which the reference is to be registered, or null if registration is not required |