diff -r d17383603741 -r 5d2156bcb78b src/share/vm/memory/metaspace.cpp --- a/src/share/vm/memory/metaspace.cpp Tue Sep 04 18:01:20 2012 -0700 +++ b/src/share/vm/memory/metaspace.cpp Tue Sep 04 16:20:28 2012 -0700 @@ -2541,7 +2541,22 @@ // MetaspaceAux +size_t MetaspaceAux::used_in_bytes_unsafe(Metaspace::MetadataType mdtype) { + size_t used = 0; + ClassLoaderDataGraphMetaspaceIterator iter; + while (iter.repeat()) { + Metaspace* msp = iter.get_next(); + // Sum allocation_total for each metaspace + if (msp != NULL) { + used += msp->used_words(mdtype); + } + } + return used * BytesPerWord; +} + size_t MetaspaceAux::used_in_bytes(Metaspace::MetadataType mdtype) { + assert(SafepointSynchronize::is_at_safepoint(), + "Consistency checks require being at a safepoint"); size_t used = 0; #ifdef ASSERT size_t free = 0; @@ -2646,15 +2661,15 @@ out->print_cr(" Metaspace total " SIZE_FORMAT "K, used " SIZE_FORMAT "K," " reserved " SIZE_FORMAT "K", - capacity_in_bytes()/K, used_in_bytes()/K, reserved_in_bytes()/K); + capacity_in_bytes()/K, used_in_bytes_unsafe()/K, reserved_in_bytes()/K); out->print_cr(" data space " SIZE_FORMAT "K, used " SIZE_FORMAT "K," " reserved " SIZE_FORMAT "K", - capacity_in_bytes(nct)/K, used_in_bytes(nct)/K, reserved_in_bytes(nct)/K); + capacity_in_bytes(nct)/K, used_in_bytes_unsafe(nct)/K, reserved_in_bytes(nct)/K); out->print_cr(" class space " SIZE_FORMAT "K, used " SIZE_FORMAT "K," " reserved " SIZE_FORMAT "K", - capacity_in_bytes(ct)/K, used_in_bytes(ct)/K, reserved_in_bytes(ct)/K); + capacity_in_bytes(ct)/K, used_in_bytes_unsafe(ct)/K, reserved_in_bytes(ct)/K); } // Print information for class space and data space separately.