Garbage Collector:
In c,c++ programing language programmer show very much interest to allocate the memory but
it most of time it does not deallocate the memory due to this negligibility the chance of failing application is more
To overcome this problem:
There is one component running in backround to destoy useless object due this componenet chances of failing application is less due to memory promblem.
This component of JVM is nothing but Garbage Collector(GC)
hence main purpose of GC to destoy useless objects
The ways to make object Eligible for garbage collector:
Reassigning reference variable:
Student s=new Student();
Student s1=new Student();
//some line of code here
s=new Student();
//some line of code here
s=s1;
so s is eligible for garbage collector
Nullifing reference variable:
Student s=new Student();
//some line of code here
s=null;
so s is eligible for garbage collector
once we made object eligible for GC this object may not destroy by GC immediately
whevenever JVM run GC then these object will be destroy and we cannot except exctaly when
jvm run GC it is JVM vendor dependent.
// this question asked in interview to one of my friend
Method for Requesting JVM to Run GC:
By using:
System.gc();
By Using:
Runtime r=Runtime.getRuntime();
this Runtime class has 3 method:
long freeMemory();
void gc();
long totalMemory();
out of this two 2nd one is best suitable because:
System.gc() is static method and r.gc() is instance method
static method are recommented to used over instance method because here
System.gc() internally called r.gc() method.