Clase java.lang.ref.WeakReference en Java

Cuando creamos un objeto en Java, un objeto no es débil por defecto. Para crear un objeto de referencia débil, debemos especificarlo explícitamente en la JVM. 

Por qué se utilizan objetos de referencia débiles: 

A diferencia de C/C++, Java es compatible con Dynamic Garbage Collection. Esto se realiza cuando la JVM ejecuta el recolector de elementos no utilizados. Para no desperdiciar espacio, el recolector de basura elimina todos los objetos inalcanzables. Sin embargo, para marcar un objeto para la recolección de basura, podemos crear un objeto de referencia débil.

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 ...");
    }
}
Producción

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

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

Constructores en la clase WeakReference:

Parámetros Descripción
Referencia débil (referente T) Este constructor crea una nueva referencia débil que se refiere al objeto dado.
WeakReference (T referente, ReferenceQueue <T> q) Este constructor crea una nueva referencia débil que se refiere al objeto dado y se registra con la cola dada.

Métodos heredados de la clase de referencia

Método Descripción
claro ( ) Este método borra este objeto de referencia.
poner en cola ( ) Este método agrega este objeto de referencia a la cola con la que está registrado, si corresponde.
obtener ( ) Este método devuelve el referente de este objeto de referencia.
está en cola ( ) Este método indica si este objeto de referencia ha sido puesto en cola, ya sea por el programa o por el recolector de elementos no utilizados.

Implementación de Métodos:

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..");
    }
}
Producción

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

Publicación traducida automáticamente

Artículo escrito por varunkedia y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *