GC might have decided it were better to wait until cleanin up… you’ll have to profile this to be sure.
About repainting, I’m not sure about your update() method but I don’t have time to investigate…
Also, verify there isn’t any thread starvation (does your fps animator contains a Thread.sleep(…) ?) as starvation can cause repainting problems.
You could also println some info to get a better idea of the applet life cycle ( differences between stop() and destroy() for example : try your applet with firefox tabbed browsing and you will see a start/stop at each tab-switching).
Lilian