the Java language equivalent of a C++ destructor. Finalizers are rarely used in a Java program because the Java emulator performs automatic garbage collection of memory resources for you, freeing you (no pun intended) from having to free memory. Objects may, however, control other resources such as open files, sockets, native methods, etc.; an object's finalizer (named finalize()) frees these when the garbage collector calls it.