What is the garbage collector in Java?

前端 未结 16 1053
故里飘歌
故里飘歌 2020-11-22 11:24

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

16条回答
  •  花落未央
    2020-11-22 11:51

    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:

    1. Mark phase
    2. Sweep phase

    read here for more details - Mark and Sweep Algorithm

提交回复
热议问题