1.1 --- a/src/share/vm/memory/metaspace.cpp Tue Sep 04 18:01:20 2012 -0700 1.2 +++ b/src/share/vm/memory/metaspace.cpp Tue Sep 04 16:20:28 2012 -0700 1.3 @@ -2541,7 +2541,22 @@ 1.4 1.5 // MetaspaceAux 1.6 1.7 +size_t MetaspaceAux::used_in_bytes_unsafe(Metaspace::MetadataType mdtype) { 1.8 + size_t used = 0; 1.9 + ClassLoaderDataGraphMetaspaceIterator iter; 1.10 + while (iter.repeat()) { 1.11 + Metaspace* msp = iter.get_next(); 1.12 + // Sum allocation_total for each metaspace 1.13 + if (msp != NULL) { 1.14 + used += msp->used_words(mdtype); 1.15 + } 1.16 + } 1.17 + return used * BytesPerWord; 1.18 +} 1.19 + 1.20 size_t MetaspaceAux::used_in_bytes(Metaspace::MetadataType mdtype) { 1.21 + assert(SafepointSynchronize::is_at_safepoint(), 1.22 + "Consistency checks require being at a safepoint"); 1.23 size_t used = 0; 1.24 #ifdef ASSERT 1.25 size_t free = 0; 1.26 @@ -2646,15 +2661,15 @@ 1.27 out->print_cr(" Metaspace total " 1.28 SIZE_FORMAT "K, used " SIZE_FORMAT "K," 1.29 " reserved " SIZE_FORMAT "K", 1.30 - capacity_in_bytes()/K, used_in_bytes()/K, reserved_in_bytes()/K); 1.31 + capacity_in_bytes()/K, used_in_bytes_unsafe()/K, reserved_in_bytes()/K); 1.32 out->print_cr(" data space " 1.33 SIZE_FORMAT "K, used " SIZE_FORMAT "K," 1.34 " reserved " SIZE_FORMAT "K", 1.35 - capacity_in_bytes(nct)/K, used_in_bytes(nct)/K, reserved_in_bytes(nct)/K); 1.36 + capacity_in_bytes(nct)/K, used_in_bytes_unsafe(nct)/K, reserved_in_bytes(nct)/K); 1.37 out->print_cr(" class space " 1.38 SIZE_FORMAT "K, used " SIZE_FORMAT "K," 1.39 " reserved " SIZE_FORMAT "K", 1.40 - capacity_in_bytes(ct)/K, used_in_bytes(ct)/K, reserved_in_bytes(ct)/K); 1.41 + capacity_in_bytes(ct)/K, used_in_bytes_unsafe(ct)/K, reserved_in_bytes(ct)/K); 1.42 } 1.43 1.44 // Print information for class space and data space separately.