In Java, Garbage Collection is automatic. Garbage Collector Thread runs as a low priority daemon thread freeing memory.
When there is not enough memory. Or when the daemon GC thread gets a chance to run.
An Object is eligble for GC, when there are no references to the object.
The purpose of finalization is to give an unreachable object the opportunity to perform any cleanup processing before the object is garbage collected.
These methods inform the JVM to run GC but this is only a request to the JVM but it is up to the JVM to run GC immediately or run it when it gets time.
finalize() method is called by the GC just before releasing the object's memory. It is normally advised to release resources held by the object in finalize() method.
Yes. It can be done in finalize() method of the object but it is not advisable to do so.
No. finalize() method will run only once for an object. The resurrected object's will not be cleared till the JVM cease to exist.
Garbage Collection is multi threaded from JDK1.3 onwards.
Immediately after Exception block is executed.
Immediately after method's execution is completed.
No. It will be garbage collected only in the next GC cycle.