Hmm.. how is Java3D for garbage generation? I only experimented VERY briefly with it and found that my simple bolb of code to bounce a ball would glitch annoyingly due to what I assumed was GC issues. Maybe I got that all wrong or was doing something stupid..
Not pointing at you in particular, but there seems to be a vogue these days to blame the garbage collector every time any program stutters. In most cases (> 90% perhaps) I'd hazard it's actually poor programming. Almost none of those who complain of GC problems appear to have actually *checked* whether it was a GC pause. A more likely culprit is often a poor scheduler, or a use of threads that is confusing the scheduler (I'm having problems with that in an app at the moment, and not sure yet whether it's my fault for doing something stupid with my threading, or the scheduler's for being unable to schedule a mere 4 native pthreads properly!).
As Cas mentioned, GC these days uses pretty good implementations (although I'm still eagerly awaiting a multi-threaded incremental GC from Sun as standard

). Admittedly, Sun did make a big mistake with their early GC algorithms, which anyone could have predicted were going to be a major PITA - they were using algos that people just hadn't been using for years, because they were known to be so poor. Reading hotspot's "optimizations in the GC" in the release notes for some of the 1.2.x releases was a real eye-opener.