First how do you know you have a leak out of memory, which GC are you using ?
The simplest trick is to run do a jmap at the start when you think its stable then when you think memory has risen jmap again and compare the difference.
Jmap and visualVM (very similar to NetBeans I believe same code base) are supplied free in the
Java JDK.
As a quicky download Eclipse MAT (free) and run a leak report on one of your hprofs you think shows the leak to see if that tells you anything.
Your right in that looking at the base Java classes is usually pointless (except when I found a Java plugin bug lol) they are usually caused by something further down the list,... I would look down the list for the first of your classes or other lib you use even if seemingly small, from there with Eclipse Mat usually or Visual VM nearest GC root I work out what's the biggest consumer and then how/if they cause the bigger problems near the top. the other way you can tackle it is to use MAT to tell you what the biggest char [] consumer is etc but that's such a generic class that it can be hard to interpret the results. I usually have both Eclipse MAT and Visual VM on the job when fixing one of these.
"Eagles may soar but weasels don't get sucked into jet engines" SCJP 1.6, SCWCD 1.4, SCJD 1.5,SCBCD 5