Garbage Collection

Filter Course


Garbage Collection

Published by: sadikshya

Published date: 17 Jun 2021

Garbage Collection photo

Garbage Collection

In Java, garbage means unreferenced objects. Garbage Collection is a process of reclaiming the runtime unused memory automatically. In other words, it is a way to destroy the unused objects. To do so, we were using a free() function in C language and delete() in C++.

Advantages

  • It makes java memory-efficient because garbage collector removes the unreferenced objects from heap memory.
  • It is automatically done by the garbage collector(a part of JVM) so we don’t need to make extra efforts.

Terms

Unreachable objects: An object is said to be unreachable if it doesn’t contain any reference to it.

Integer i = new Integer(4);
// the new Integer object is reachable via the reference in ‘i’
i = null;
// the Integer object is no longer reachable.

Eligibility for garbage collection :
An object is said to be eligible for GC(garbage collection) if it is unreachable.

Steps Of Garbage Collection

  • Marking
  • Normal Delation
  • Delation With Compacting

Marking

The garbage collector determines which pieces of memory are in use and which are not.

Normal Delation

Garbage collector removes unreferenced objects leaving referenced objects and pointers to free space.

Delation With Compacting

Garbage collector deletes unreferenced objects and compacts the remaining referenced objects.

Unreferenced

How can an object be unreferenced?
There are many ways:
– By nulling the reference
– By assigning a reference to another
– By anonymous object etc.

Nulling

By nulling a reference:

Employee e=new Employee();
e=null;

Assigning

By assigning a reference to another:

Employee e1=new Employee();
Employee e2=new Employee();
e1=e2;

//now the first object referred by e1 is available for garbage collection

Anonymous

By anonymous object:

new Employee();

Final

The final keyword in java is used to restrict the user. The java final keyword can be used in many contexts. Final can be:

  • variable
  • methoD
  • class

Example:

class Bike9{
final int speedlimit=90;//final variable
void run(){
speedlimit=400;
}
public static void main(String args[]){
Bike9 obj=new  Bike9();
obj.run();
}
}//end of class