The JavaTM Tutorial

| Start of Tutorial > Start of Trail > Start of Lesson | Search Feedback Form

Trail: Learning the Java Language
Lesson: Object Basics and Simple Data Objects

## Cleaning Up Unused Objects

> 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 Garbage Collector

> 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 the `gc` method in the `System` 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.

### Finalization

> 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's `finalize` 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 a `finalize` 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 the `Object` class, which is the top of the Java platform's class hierarchy and a superclass of all classes. A class can override the `finalize` method to perform any finalization necessary for objects of that type. If you override `finalize`, your implementation of the method should call `super.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

Copyright 1995-2004 Sun Microsystems, Inc. All rights reserved.