I also have multiple tabs in my application but instead of creating multiple Canvas3D, I created a single Canvas3D. When the user changes table, I simply use a Java3D SwitchGroup to switch to different graphs. It's faster and consumes less memory this way.