jmap -histo reports wrong histogram with CMS. It misses portion of heap graph in histogram computation when used with CMS. More details are in "Comments" section.
Walking freechunks when VM is not necessarily at safepoint (therefore we may be walking non-parseable heap) could be the root cause. We will have evaluate whether we can account for such freechunks/objects in some way. May be, histogram may print "X" bytes of allocated but unknown Java objects.
Webrev of the fix: