For starters - run a profiler to accurately figure out where and what exactly is causing the memory leak[s]. There are many freely available memory profilers, written in Java. Pick one and then post the results back, so that you can be suggested some appropriate solution, instead of turning this post into a general discussion about memory leaks in Java!
pie. tiny ad:
Building a Better World in your Backyard by Paul Wheaton and Shawn Klassen-Koop