Hat der garbage collector die Arbeit auf statische Variablen oder Methoden in java?

Erstelle ich ein Probe-demo-Programm für die machen mir zu verstehen, dass, wie kann ich die freigeben die Referenz der statischen Variablen, Methoden in java mit garbage collector?

Ich bin mit Schwachen Referenz für die nicht-Verhinderung der garbage collector.

Klasse Sample

public class Sample {

    private static String userName;
    private static String password;
    static {
        userName = "GAURAV";
        password = "password";
    }
    public static String getUserName(){
        return userName;
    }
    public static String getPassword(){
        return password;
    }
}

Klasse User

import java.lang.ref.WeakReference;

public class User {

    public static void main(String[] args) {
        /**
         * Created one object of Sample class
         */
        Sample obj1 = new Sample();
        /**
         * I can also access the value of userName through it's class name 
         */
        System.out.println(obj1.getUserName()); //GAURAV
        WeakReference<Sample> wr = new WeakReference<Sample>(obj1);
        System.out.println(wr.get());  //com.test.ws.Sample@f62373
        obj1 = null;
        System.gc();
        System.out.println(wr.get()); //null
        /**
         * I have deallocate the Sample object . No more object referencing the Sample oblect class but I am getting the value of static variable. 
         */
        System.out.println(Sample.getUserName()); //GAURAV
    }

}
  • Der garbage collector sammelt Objekte, nicht die Variablen. Eine variable ist ein container, der /enthält/ eine Referenz. Und vor allem, in den meisten Fällen Sie don ' T wollen, um Durcheinander mit garbage collection.
  • Zu viele Statik. Warum sind Sie, mischen Sie?
  • Nein, Sie haben zu bereinigen nach sich selbst
InformationsquelleAutor gaurav kumar | 2012-10-29
Schreibe einen Kommentar