Antti.. Has some Good questions
For the Q1:
From the Java Spec:
protected void finalize() throws Throwable
Called by the garbage collector on an object when garbage collection determines that there are no more references to the object. A subclass overrides the finalize method to dispose of system resources or to perform other cleanup.
public static void exit(int status)
Terminates the currently running Java Virtual Machine. The argument serves as a status code; by convention, a nonzero status code indicates abnormal termination.
In my humble opinion Finalizer cleans up the resources and objects,i dont think it can call system.exit()
Any comments from fellow Ranchers?

Thankx