Garbage Collection and Finalize Method

Download as pdf or txt
Download as pdf or txt
You are on page 1of 1

SEM-III

KNS INSTITUTE OF TECHNLOGY

JAVA CH-2

DEPARTMENT OF MCA

2.4 Garbage Collection

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.

There is no explicit need to destroy objects as in C++.

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.

2.5 The finalize( ) Method ( a bit similar to destructor method of C++)

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.

protected void finalize( )


{
// finalization code here
}

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.

Lecturer: Syed Khutubuddin Ahmed

You might also like