Garbage
collection (GC) is the process that aims to free up
occupied memory that is no longer referenced by any reachable Java object, and
is an essential part of the Java virtual machine's (JVM's) dynamic memory
management system. In a typical garbage collection cycle all objects that are
still referenced, and thus reachable, are kept. The space occupied by
previously referenced objects is freed and reclaimed to enable new object
allocation. To do so, we
were using free() function in C language and delete() in C++. But, in java it
is performed automatically. So, java provides better memory management.
Advantage
of Garbage Collection
- 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.
How
can an object be unreferenced?
There are many ways:
- By nulling the reference
- By assigning a reference to another
- By annonymous object etc.
1)
By nulling a reference:
Employee e=new Employee();
e=null;
2)
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
3)
By annonymous object:
new Employee();
finalize()
method
The finalize() method is invoked
each time before the object is garbage collected. This method can be used to
perform cleanup processing. This method is defined in Object class as:
- protected void finalize(){}
Note:
The Garbage collector of JVM collects only those objects that are created by
new keyword. So if you have created any object without new, you can use
finalize method to perform cleanup processing (destroying remaining objects).
gc()
method
The gc() method is used to invoke
the garbage collector to perform cleanup processing. The gc() is found in
System and Runtime classes.
public static void gc(){}
Note:
Garbage collection is performed by a daemon thread called Garbage
Collector(GC). This thread calls the finalize() method before object is garbage
collected.
Simple
Example of garbage collection in java
public class TestGarbage1{
public void finalize(){System.out.println("object is garbage collected");}
public static void main(String args[]){
TestGarbage1 s1=new TestGarbage1();
TestGarbage1 s2=new TestGarbage1();
s1=null;
s2=null;
System.gc();
}
}
Output:
object is garbage collected
object is garbage collected
Note:
Neither finalization nor garbage collection is guaranteed.
To learn more about java garbage collection refer to
the following link:
No comments:
Post a Comment