I have not used the tools you metioned. But from my MSWindows experiences and understanding of
Java. I've some suggestions on how to avoid and fix mem-leaks.
1) Recycle huge objects, do your own mem-management. Pooling is one way to do it. Using an arrays to recycle them is another simple way, create new one only when the recycling array is empty. I used to do this in c around the x286 time.
2) When an object is not in use any more, explicitly set it to null. But this will depend on the concious of your programmers.
3) When you use tools (like JProbe or the BoundsChecker in the old days). Find the area which uses memory most, and refactor (redesign/code) that part.
SCJD Study Group has been moved to http://www.developergroup.org/