i think your question is about the difference between garbage collection and finalization.
Simply speaking, garbage collection is just to RECLAIM the MEMORY occupied by unused object, and it is only about the memory. However finialization is to clean up an object. It means that if there is some activity that must be performed before you no longer need an object, you must perform that activity yourself (quite possibly in your finalize method). ( While it is not same as the destructor in C++). Finalize is not used much.