Home >Java >javaTutorial >When Can Static Fields Be Garbage Collected?
A class containing static variables is never unloaded by the garbage collector as long as the class is loaded. Static variables remain in memory for the duration of the program, even if the class is no longer being used.
class MyUtils { private static MyObject myObject = new MyObject(); /*package*/static boolean doStuff(Params... params) { // do stuff with myObject and params... } }
In this example, myObject is a static variable, so it will not be eligible for garbage collection until the MyUtils class is unloaded. Since the class is never unloaded, myObject will remain in memory for the life of the program.
The JLS Section 12.7 Unloading of Classes and Interfaces states that a class or interface may only be unloaded if its defining class loader may be reclaimed by the garbage collector. Classes and interfaces loaded by the bootstrap loader may not be unloaded.
The above is the detailed content of When Can Static Fields Be Garbage Collected?. For more information, please follow other related articles on the PHP Chinese website!