# HG changeset patch # User jmasa # Date 1346941710 25200 # Node ID aa8c9eb6d900b894d6e624dc06f04b7557ce68db # Parent 5b15a8f5797918d69669b4de1d7edb1688a02687 7196298: Better fix for 7195789 Reviewed-by: jcoomes, brutisso diff -r 5b15a8f57979 -r aa8c9eb6d900 hotspot/src/share/vm/memory/metaspace.cpp --- a/hotspot/src/share/vm/memory/metaspace.cpp Wed Sep 05 20:08:08 2012 -0400 +++ b/hotspot/src/share/vm/memory/metaspace.cpp Thu Sep 06 07:28:30 2012 -0700 @@ -2541,7 +2541,7 @@ // MetaspaceAux -size_t MetaspaceAux::used_in_bytes_unsafe(Metaspace::MetadataType mdtype) { +size_t MetaspaceAux::used_in_bytes(Metaspace::MetadataType mdtype) { size_t used = 0; ClassLoaderDataGraphMetaspaceIterator iter; while (iter.repeat()) { @@ -2554,33 +2554,6 @@ 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; - size_t capacity = 0; -#endif - ClassLoaderDataGraphMetaspaceIterator iter; - while (iter.repeat()) { - Metaspace* msp = iter.get_next(); - // Sum allocation_total for each metaspace - if (msp != NULL) { - used += msp->used_words(mdtype); -#ifdef ASSERT - free += msp->free_words(mdtype); - capacity += msp->capacity_words(mdtype); - assert(used + free == capacity, - err_msg("Accounting is wrong used " SIZE_FORMAT - " free " SIZE_FORMAT " capacity " SIZE_FORMAT, - used, free, capacity)); -#endif - } - } - return used * BytesPerWord; -} - size_t MetaspaceAux::free_in_bytes(Metaspace::MetadataType mdtype) { size_t free = 0; ClassLoaderDataGraphMetaspaceIterator iter; @@ -2661,15 +2634,15 @@ out->print_cr(" Metaspace total " SIZE_FORMAT "K, used " SIZE_FORMAT "K," " reserved " SIZE_FORMAT "K", - capacity_in_bytes()/K, used_in_bytes_unsafe()/K, reserved_in_bytes()/K); + capacity_in_bytes()/K, used_in_bytes()/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_unsafe(nct)/K, reserved_in_bytes(nct)/K); + capacity_in_bytes(nct)/K, used_in_bytes(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_unsafe(ct)/K, reserved_in_bytes(ct)/K); + capacity_in_bytes(ct)/K, used_in_bytes(ct)/K, reserved_in_bytes(ct)/K); } // Print information for class space and data space separately. diff -r 5b15a8f57979 -r aa8c9eb6d900 hotspot/src/share/vm/memory/metaspace.hpp --- a/hotspot/src/share/vm/memory/metaspace.hpp Wed Sep 05 20:08:08 2012 -0400 +++ b/hotspot/src/share/vm/memory/metaspace.hpp Thu Sep 06 07:28:30 2012 -0700 @@ -149,10 +149,6 @@ // Statistics for class space and data space in metaspace. static size_t used_in_bytes(Metaspace::MetadataType mdtype); - // Same as used_in_bytes() without the consistency checking. - // Use this version if not at a safepoint (so consistency is - // not necessarily expected). - static size_t used_in_bytes_unsafe(Metaspace::MetadataType mdtype); static size_t free_in_bytes(Metaspace::MetadataType mdtype); static size_t capacity_in_bytes(Metaspace::MetadataType mdtype); static size_t reserved_in_bytes(Metaspace::MetadataType mdtype); @@ -167,11 +163,6 @@ used_in_bytes(Metaspace::NonClassType); } - static size_t used_in_bytes_unsafe() { - return used_in_bytes_unsafe(Metaspace::ClassType) + - used_in_bytes_unsafe(Metaspace::NonClassType); - } - // Total of available space in all Metaspaces // Total of capacity allocated to all Metaspaces. This includes // space in Metachunks not yet allocated and in the Metachunk diff -r 5b15a8f57979 -r aa8c9eb6d900 hotspot/src/share/vm/memory/metaspaceCounters.cpp --- a/hotspot/src/share/vm/memory/metaspaceCounters.cpp Wed Sep 05 20:08:08 2012 -0400 +++ b/hotspot/src/share/vm/memory/metaspaceCounters.cpp Thu Sep 06 07:28:30 2012 -0700 @@ -35,7 +35,7 @@ size_t min_capacity = MetaspaceAux::min_chunk_size(); size_t max_capacity = MetaspaceAux::reserved_in_bytes(); size_t curr_capacity = MetaspaceAux::capacity_in_bytes(); - size_t used = MetaspaceAux::used_in_bytes_unsafe(); + size_t used = MetaspaceAux::used_in_bytes(); initialize(min_capacity, max_capacity, curr_capacity, used); } @@ -131,7 +131,7 @@ void MetaspaceCounters::update_used() { assert(UsePerfData, "Should not be called unless being used"); - size_t used_in_bytes = MetaspaceAux::used_in_bytes_unsafe(); + size_t used_in_bytes = MetaspaceAux::used_in_bytes(); _used->set_value(used_in_bytes); }