Stay organized with collections
    
    
      
      Save and categorize content based on your preferences.
    
  
  
    
  
  
  
  
    
    
    
  
  
    
    
    
    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. |  
                    | Any! | clone()
                         Throws CloneNotSupportedException. AReferencecannot be meaningfully cloned. Construct a newReferenceinstead. |  
                    | 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()
                         Tests if this reference object is in its associated queue, if any. This method returns trueonly if all of the following conditions are met:  
                            Otherwise, this method returnsthis reference object was registered with a queue when it was created; and the garbage collector has added this reference object to the queue or enqueue()is called; andthis reference object is not yet removed from the queue.  false. This method may returnfalseif this reference object has been cleared but not enqueued due to the race condition. |  
                    | 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 synchronizedblocks 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. |  
                    | Boolean | refersTo(obj: T)
                         Tests if the referent of this reference object is obj. Using anullobjreturnstrueif the reference object has been cleared. Prefer this to a comparison with the result ofget. |  | 
      
    
    Public constructors
    
      WeakReference
      
      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 | 
        
      
     
    
      WeakReference
      
      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 nullif registration is not required | 
        
      
     
  
  
  
    
  
 
  
    
      
      
    
    
      
    
    
  
       
    
    
      
    
  
  
  Content and code samples on this page are subject to the licenses described in the Content License. Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
  Last updated 2025-02-10 UTC.
  
  
  
    
      [[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-02-10 UTC."],[],[]]