a is correct because we can REQUEST to invoke garbage
collection explicitly by invoking either Runtime.gc().
b is correct because finalize method will be called just before the object is collected. This is just a notification mechanism
to tell that object is about to be collected. So, this will
be called only before collection.
c is correct, because finalize method will always be
an override of a superclass method. So finalize method should
invoke superclass's finalize method.
This process is having a significance, i.e., before making
an object available for garbage collection we should make
sure that all it is not having any references,
and d is not correct because garbage collection behavior will never be predictable.
[This message has been edited by sai murali (edited October 03, 2001).]