game cleanup

I’m working on a large swing app that has some light 2d graphics. I’m converting all the graphics to jogl. the user creates instances of the game class from a menu, and a new gl canvas, listiener and animator are created with each game instance. Each instance is destroyed after the game finishes. The game slows drastically after the first game is destroyed and a new game is created.
I’m looking for suggestions in what things need to be done to cleanup after jogl, short of killing the jvm. for instance should I use the glcanvas.removeGLEventListener() method, should I nullify the canvas?
any help is much appreciated.
-rob

This is what my cleanup code has evolved to look like so far:

I use the above in an app which has around 100+ different renderers with separate scene data in its own class.