Start of Tutorial > Start of Trail > Start of Lesson |
Search
Feedback Form |
Some object-oriented languages require that you keep track of all the objects you create and that you explicitly destroy them when they are no longer needed. Managing memory explicitly is tedious and error prone. The Java platform allows you to create as many objects as you want (limited, of course, by what your system can handle), and you don't have to worry about destroying them. The Java runtime environment deletes objects when it determines that they are no longer being used. This process is called garbage collection.An object is eligible for garbage collection when there are no more references to that object. References that are held in a variable are usually dropped when the variable goes out of scope. Or, you can explicitly drop an object reference by setting the variable to the special value
null
. Remember that a program can have multiple references to the same object; all references to an object must be dropped before the object is eligible for garbage collection.
The Java runtime environment has a garbage collector that periodically frees the memory used by objects that are no longer referenced. The garbage collector does its job automatically, although, in some situations, you may want to run the garbage collection explicitly by calling thegc
method in theSystem
class. For instance, you might want to run the garbage collector after a section of code that creates a large amount of garbage or before a section of code that needs a lot of memory.
Before an object gets garbage-collected, the garbage collector gives the object an opportunity to clean up after itself through a call to the object'sfinalize
method. This process is known as finalization.Most programmers don't have to worry about implementing the
finalize
method. In rare cases, however, a programmer might have to implement afinalize
method to release resources, such as native peers, that aren't under the control of the garbage collector.The
finalize
method is a member of theObject
class, which is the top of the Java platform's class hierarchy and a superclass of all classes. A class can override thefinalize
method to perform any finalization necessary for objects of that type. If you overridefinalize
, your implementation of the method should callsuper.finalize
as the last thing it does. Overriding Methods talks more about how to override methods.
Start of Tutorial > Start of Trail > Start of Lesson |
Search
Feedback Form |