the topic is fascinating and it surely would be nice to allocate heap on a per-application basis.
unfortunately this is not possible (please prove me wrong!).
What you can do is take a heap dump and analyze the object allocated, under certain circumstances - using a powerful profiler - you can even trace the code which allocated the object.
My favourite tools are yourkit.com and visualvm