Saturday, October 11, 2025
HomeLanguagesJavajava.lang.ref.WeakReference Class In Java

java.lang.ref.WeakReference Class In Java

When we create an object in Java, an object isn’t weak by default. To create a Weak Reference Object, we must explicitly specify this to the JVM. 

Why Weak Reference Objects are used: 

Unlike C/C++, Java supports Dynamic Garbage Collection. This is performed when the JVM runs the Garbage Collector. In order to not waste space, the garbage collector deletes all unreachable objects. However, in order to mark an object for garbage collection, we can create a weak reference object.

Java




// Java Program to show the usage of
// java.lang.ref.WeakReference Class
import java.lang.ref.WeakReference;
class GFG {
    public static void main(String[] args)
    {
        // creating a strong object of MyClass
        MyClass obj = new MyClass();
       
        // creating a weak reference of type MyClass
        WeakReference<MyClass> wobj
            = new WeakReference<>(obj);
        System.out.println(
            "-> Calling Display Function using strong object:");
        obj.Display();
        System.out.println("-> Object set to null");
        obj = null;
        obj = wobj.get();
        System.out.println(
            "-> Calling Display Function after retrieving from weak Object");
        obj.Display();
    }
}
class MyClass {
    void Display()
    {
        System.out.println("Display Function invoked ...");
    }
}


Output

-> Calling Display Function using strong object:
Display Function invoked ...
-> Object set to null
-> Calling Display Function after retrieving from weak Object
Display Function invoked ...
Output

-> Calling Display Function using strong object:
Display Function invoked ...
-> Object set to null
-> Calling Display Function after retrieving from weak Object
Display Function invoked ...

Constructors in the WeakReference Class:

Parameters Description
WeakReference ( T referent ) This constructor creates a new weak reference that refers to the given object.
WeakReference ( T referent, ReferenceQueue <T> q) This constructor creates a new weak reference that refers to the given object and is registered with the given queue.

Methods inherited from Reference Class

Method Description
clear ( ) This method clears this reference object.
enqueue ( ) This method adds this reference object to the queue with which it is registered if any.
get ( ) This method returns this reference object’s referent.
isEnqueued ( ) This method tells whether this reference object has been enqueued, either by the program or by the garbage collector.

Implementation of Methods :

Java




// Java Program to show the usage of
// java.lang.ref.WeakReference Class
import java.lang.ref.WeakReference;
class GFG {
    public static void main(String[] args)
    {
        X obj = new X();
        WeakReference<X> weakobj
            = new WeakReference<X>(obj);
        System.out.println(
            "-> Retrieving object from weak reference using get ()");
        weakobj.get().show();
        System.out.println(
            "-> Is it possible to queue object using enqueue ()");
        System.out.println(weakobj.enqueue());
        System.out.println(
            "-> Checking if reference is queued using isEnqueued ()");
        System.out.println(weakobj.isEnqueued());
    }
}
class X {
    void show()
    {
        System.out.println("show () from X invoked..");
    }
}


Output

-> Retrieving object from weak reference using get ()
show () from X invoked..
-> Is it possible to queue object using enqueue ()
false
-> Checking if reference is queued using isEnqueued ()
false

 

RELATED ARTICLES

Most Popular

Dominic
32350 POSTS0 COMMENTS
Milvus
87 POSTS0 COMMENTS
Nango Kala
6719 POSTS0 COMMENTS
Nicole Veronica
11881 POSTS0 COMMENTS
Nokonwaba Nkukhwana
11941 POSTS0 COMMENTS
Shaida Kate Naidoo
6839 POSTS0 COMMENTS
Ted Musemwa
7101 POSTS0 COMMENTS
Thapelo Manthata
6794 POSTS0 COMMENTS
Umr Jansen
6794 POSTS0 COMMENTS