One of the major features that Java offers is automated memory management; in Java, you don't need to keep track of pointers, or
destroy objects when you're done with them. This doesn't mean that paying attention to memory management isn't a good idea;
if you leave lots of
garbage collection up to the Java environment, it might (and probably will) decide to do it at an inconvenient time,
which can produce some nasty skipping in your 3d scene. The basic ways to avoid this are:
- Avoid creating more objects than you need
- Destroy objects when you are done with them
- Monitor object count and memory usage while your
application is running.
Economize object creation
The easiest way to start writing a memory-friendly application is to make sure you're not creating objects where you don't need them.
If you're creating a new group every time your player fires a missile, try having a fixed number of groups that you
re-use, and just hide or detach the model while the bullet isn't in the air. Also, be wary of API calls that return a
this creates an object to return this value. If you're using
setPosition() to move objects,
see if you can get the desired result by calling
Destroy objects when you are done with them
This step is pretty straightforward; you shouldn't keep WildTangent objects around any longer than you need them, and you should always destroy
all objects (set them to
null) when the page unloads, so that the Web Driver object itself can unload. You can do your
object destruction in your applet's
unload() function, as in the HelloWorld applet
from Chapter 1:
public void unload()
// Release references to WTObjects from memory.
// This is necessary to successfully release the WT object from memory:
camera = null;
stage = null;
light = null;
In addition to obvious WT objects, also be sure to clean out any memory structures that might have WT objects in them, such as
hash tables, arrays, or vectors. A good way to see if your app cleans up properly is to refresh the browser: If your memory usage goes up
substantially (more than 100k or so) after refreshing the browser, you are probably missing objects when you clean up.
Monitor object count and memory usageWhile your
applet is running, you can monitor memory usage with a variety of applications-
the easiest method would be to use the Task Manager in Windows 2000. More
advanced applications are also available, such as Task Info 2000 from www.iarsn.com . If
memory use is steadily climbing, this is evidence that objects are being created
without being destroyed- which will eventually lead to a stutter in the Web Driver when automatic garbage collection
occurs. You can also monitor object creation in the Web Driver's debug window while the application is running; if your object
count is steadily rising, this could mean that you are creating objects needlessly.
In the next chapter, we'll look at managing Web Driver art assets.
©2000 WildTangent Inc. All Rights Reserved.
Website Terms & Privacy Statement