A) The purpose of a finalize method is to recover memory and other system resources.
B) The purpose of a finalize method is to recover system resources other than memory.
C) You should always write a finalize method for every class.
D) The order in which objects are created controls the order in which their finalize methods are called.
A) seems incorrect because you don't really have to worry about memory allocated within the VM; that's what the gc is for, so you're getting this for free already
B) This is really the main reason for finalizers; In fact, my understanding is that they are really just hooks to let the VM interact with applications *outside* the VM...in "native" land, so that for example, if you are using a native library and are done with some object you created via that native library, the VM , via your finalizer, can clean up those outside resources.
C) HA, not even. I have yet to write a finalizer in production code.
D) Nope, you get no guarantees about the order of object deallocation, when finalizers get called, or even when the gc runs.
So the only correct statement here is B).

[ January 10, 2002: Message edited by: Rob Ross ]