Article discusses an approach to measure the size of a datastructure (object tree) in Java. It uses a reflection based algorithm to traverse an object tree given any object as the root. Worked fine for my needs. Challenge: static values of object sizes in the code. Maybe you have to measure this for your JVM. http://www.javaworld.com/javaworld/javaqa/2003-12/02-qa-1226-sizeof.html
Article discusses size of objects in Java (Object, Integer, Arrays, ...). Contains example code to measure it in your JVM. Interesting but I didn't take the time to fully analyze the code that looked a bit complicated to me at first sight. http://www.javaworld.com/javaworld/javatips/jw-javatip130.html
I was told that this is a fine Profiler that allows inspection of memory used by object and by object including child objects. It is able to compare snapshots against each other. http://www.yourkit.com/