Garbage Collection and Finalize Method
Garbage Collection and Finalize Method
Garbage Collection and Finalize Method
JAVA CH-2
DEPARTMENT OF MCA
Since objects are dynamically allocated by using the new operator, you might be wondering
how such objects are destroyed and their memory released for later reallocation.
In some languages, such as C++, dynamically allocated objects must be manually released by
use of a delete operator. Java takes a different approach; it handles deallocation for you
automatically. The technique that accomplishes this is called garbage collection.
It works like this: when no references to an object exist, that object is assumed to be no longer
needed, and the memory occupied by the object can be reclaimed.
Garbage collection only occurs sporadically (if at all) during the execution of your program.
It will not occur simply because one or more objects exist that are no longer used.
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.
By using finalization, you can define specific actions that will occur when an object is just
about to be reclaimed by the garbage collector.
Here, the keyword protected is a specifier that prevents access to finalize( ) by code
defined outside its class.
It is important to understand that finalize( ) is only called just prior to garbage collection.
It is not called when an object goes out-of-scope, for example. This means that you cannot
know whenor even iffinalize( ) 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.