Memory Leak - How to get more info on Java Heap

Using Jconsole, we noticed that the heap space for our production application fluctuates between 1G and 2G. It used to fluctuates between 300M to 800M when we have 1G allocated to JVM, now we have 3G allocated to it.

We used "jmap -histo" to get a dump of the heap space and it seems that most of the memory are allocated to char[] and byte[].- almost 600M.

How do we find out which classes allocate these char[] and byte[]? Iis there any other tools we can use to get a more detailed heap dump to help us figure out if we have memory leak?