You'll be surprised how easy it is to analyse a 2GB heap (I know I was). Forget all of the jmap tinkering, and have a look at
http://eclipse.org/mat/ - I've found it to be exceptionally useful: after a few minutes of pre-processing, it gives you a rather simple graph that tells you were your problem most likely is. It reduced the time I need to do analysis from weeks to hours. If you're not familiar with Eclipse, don't worry - it can be executed as a standalone application as well as an Eclipse plugin.