Home >Java >javaTutorial >When Can Static Fields Be Garbage Collected?

When Can Static Fields Be Garbage Collected?

Linda Hamilton
Linda HamiltonOriginal
2024-11-30 18:51:19224browse

When Can Static Fields Be Garbage Collected?

When Are Static Fields Eligible for Garbage Collection?

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.

Example

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.

Exceptions

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!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn