I have been profiling my applet using JProbe and have taken care off all of the listeners (via weak references) and other references back to the applet so that there are no references from custom classes. In theory the applet should be released from the JVM. In appletviewer I selected 'reload' and that causes the stop, destroy and init methods to be called. I get a new instance of the main applet class but the origional one is still there. I see this via the profiler. Below is a list of objects that still have a reference to the origional instance of the main applet class. These are object that I cannot get to. They seem to be under the covers. I have included the list below: <root> Native Stack <root> Native Stack EventQueueItem EventQueueItem Hashtable$Entry LightweightDispatcher MouseEvent MouseEvent OffScreenImage OffScreenImage SystemEventQueueUtilities$ComponentWorkRequest WeakHashMap$WeakKey Does this have to do with double bufferring? thanks!