Interesting solution. These problems are very hard to detect. I would suggest that you also use a profiler next time which is integrated in jave (VisualVM)