Java finalize() method

finalize() method is also called Finalizer. It gets invoked when JVM figures out that this particular instance should be garbage collected. It may perform any operations, including bringing the object back to life.

The finalize( ) Method

Sometimes an object will need to perform some action when it is destroyed. For example, if an object is holding some non-Java resource such as a file handle or character font, then you might want to make sure these resources are freed before an object is destroyed.

To handle such situations, Java provides a mechanism called finalization. By using finalization, you can define specific actions that will occur when an object is just about to be reclaimed by the garbage collector.

The finalize( ) method has this general form:

protected void finalize( ) { 
     // finalization code here 
}

Here, the keyword protected is a specifier that prevents access to finalize() by code defined outside its class.

Notes:

  • It is important to understand that finalize ( ) is only called just prior to garbage collection. So there may be case when it is not called when an object goes out-of-scope. This means that you cannot know when—or even if—finalize( ) will be executed.
  • Therefore, your program should provide other means of releasing system resources, etc., used by the object. It must not rely on finalize( ) for normal program operation.