I am confuse in between system.gc() and finalize() method of java.
We can't force to collect garbage object to JVM. We are allow to write both methods in our java code then if both are used for garbage collection, then what is point in providing two methods for garbage collection by java? 

Please tell me the exact working of both methods and internally how it works?