Rather than examining your coding looking for the standard leak patterns, your best bet is to turn on GC logging and then run a tool like HP Jmeter against those logs.
You can find instructions on how to use JMeter here : http://www.javaperformancetuning.com/tools/hpjmeter/index.shtml#howto
One common pattern to look for when analyzing the the GC logs is an object which lives in multiple generations. In a normal (non-leakly) java program you will find that objects are either short lived or long lived, meaning that are created and destroyed quickly or they exist for the duration of app. If an object is short lived it will only exists for a small stable number of generations. If an object is long lived, its age will increase as the program runs. But it will only belong to a limited number of generations. If you find an object which has multiple instances with difference ages and increasing generation counts then it's likely that object is being leaked. For a slightly better explanation take a look at this presentation: http://www.hjug.org/present/Sporar-MemoryLeaks.pdf
Once you've identified your leaky object, the next step is to analyze the heap to see who hold refrences to the leaked object. From there the problem should be realitvely easy to identify