I am new to Java and confused about the garbage collector in Java. What does it actually do and when does it comes into action. Please describe some of the properties of the
An object becomes eligible for Garbage collection or GC if it's not reachable from any live threads or by any static references.
In other words, you can say that an object becomes eligible for garbage collection if its all references are null. Cyclic dependencies are not counted as the reference so if object A has a reference to object B and object B has a reference to Object A and they don't have any other live reference then both Objects A and B will be eligible for Garbage collection.
Heap Generations for Garbage Collection -
Java objects are created in Heap
and Heap
is divided into three parts or generations for the sake of garbage collection in Java, these are called as Young(New) generation, Tenured(Old) Generation and Perm Area of the heap.
New Generation is further divided into three parts known as Eden space, Survivor 1 and Survivor 2 space. When an object first created in heap its gets created in new generation inside Eden space and after subsequent minor garbage collection if an object survives its gets moved to survivor 1 and then survivor 2 before major garbage collection moved that object to old or tenured generation.
Perm space of Java Heap is where JVM stores Metadata about classes and methods, String pool and Class level details.
Refer here for more : Garbage Collection
You can't force JVM to run Garbage Collection though you can make a request using System.gc()
or Runtime.gc()
method.
In java.lang.System
public static void gc() {
Runtime.getRuntime().gc();
}
In java.lang.Runtime
public native void gc(); // note native method
Mark and Sweep Algorithm -
This is one of the most popular algorithms used by Garbage collection. Any garbage collection algorithm must perform 2 basic operations. One, it should be able to detect all the unreachable objects and secondly, it must reclaim the heap space used by the garbage objects and make the space available again to the program.
The above operations are performed by Mark and Sweep Algorithm in two phases:
read here for more details - Mark and Sweep Algorithm