Garbage collection in java is a way in which the unreachable objects are destroyed to free up space in memory.
JVM creates a heap area which is called runtime data area, where all the objects are stored. And the space in that area is limited so it is needed to manage this area efficiently by removing the objects that are no longer required or are unused. And therefore, this process of removing the unused objects present in the heap area is known as Garbage collection.
It runs automatically in the background and is a part of a memory management system in Java.
Unlike Java, c/c++ doesn’t support Garbage collection.
Benefits/Advantages of using garbage Collection:
- Removal of unreferenced objects present in a heap memory makes the memory more efficient for use.
- The automatic removal of objects makes it faster and users do not need to make an extra effort.
finalize() method:
Before destroying an object, the finalize() method is called by Garbage Collector for performing the cleanup process. And once it’s done, Garbage Collector destroys that object.
The finalize() method is present in an Object Class as:
1 | protected void finalize(){} |
gc() method:
This method is used when needed to invoke the garbage Collector for the cleanup process.
1 | public static void gc() {} |
Example of Garbage Collection in Java:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | public class GarbageCollectionTest { public void finalize() { System.out.println("Garbage Collected"); } public static void main(String args[]) { GarbageCollectionTest g1=new GarbageCollectionTest(); GarbageCollectionTest g2=new GarbageCollectionTest(); g1=null; g2=null; System.gc(); } } |
Output of Garbage Collection:
1 2 | Garbage Collected Garbage Collected |