Hi, Tom
I saw your changes in World. You used a LinkedList for the Listeners and an Interator to iterate them. Both is not a good idea at this point.
Iterating a LinkedList through an Iterator is done in someting like O(n squared) time in Java, which is not good. So a LinkedList should be avoided if iterated (at least in perfomance critical sections).
Using an Iterator or the Java 5 loops (which are backed by an Iterator) in performance critical sections cases additional GC and should be avoided.
We had to realize this in Xith3D, too. And we had to convert all uses of an Iterator or Java 5 loops in performance critical sections by the conventional for (int i …) loops.
If this is done in any other critical section in the code, you should replace them all by for (int i …) loops. It will save a lot of GC time.
Marvin