To clean up an object, the user of that object must
call a cleanup method at the point the cleanup is desired. This is straightforward,
but it collides a bit with the C++ concept of destructor. In C++ all object is
created as a local (i.e., on the stack –not possible in java), then the
destruction happens at the closing curly braces of the scope in which the
object was created. Programmers know about the importance of initialization,
but often forget the importance of clean up. After all who need to clean up int?
Java has the garbage collector to reclaim the memory of objects that are
no longer used. Here I am considering an
unusual case: let java object allocate a special memory without using new. Garbage collector only knows how to release
memory allocated with new, so it would not know how to release the special
memory. To handle that type of situation /cases, java provides a method called finalize () that define in the class.
How it is supposed to work & What the finalize() for
?
When garbage collector is ready to ready to release
the storage used by object, it will first call finalize(), and only on the next
garbage-collection pass will it reclaim the object’s memory. So if we use finalize (), it gives the ability to perform cleanup at the time of
garbage collection. The C++ programmers, might initially mistake finalize () for the destructor in C++,
which is a function that is always called when object is destroyed. It is
important to distinguished between C++ and Java here, because in C++, objects
always get destroyed , where as in Java, object do not always get garbage
collected.
ð Object might not get garbage collected.
ð Garbage collection is not destruction.
Java has no destructor or similar concept, so we
must create an ordinary method to perform cleanup.
ð Garbage collection is only about memory.
The existence of garbage collector is to recover
memory that program no longer using. So
any activity that is associated with garbage collection, most notably finalize () method, must also be only about memory and its de-allocation.
Anurag
Comments
Post a Comment