Thu, 06 Sep 2012 07:28:30 -0700
7196298: Better fix for 7195789
Reviewed-by: jcoomes, brutisso
1.1 --- a/src/share/vm/memory/metaspace.cpp Wed Sep 05 20:08:08 2012 -0400 1.2 +++ b/src/share/vm/memory/metaspace.cpp Thu Sep 06 07:28:30 2012 -0700 1.3 @@ -2541,7 +2541,7 @@ 1.4 1.5 // MetaspaceAux 1.6 1.7 -size_t MetaspaceAux::used_in_bytes_unsafe(Metaspace::MetadataType mdtype) { 1.8 +size_t MetaspaceAux::used_in_bytes(Metaspace::MetadataType mdtype) { 1.9 size_t used = 0; 1.10 ClassLoaderDataGraphMetaspaceIterator iter; 1.11 while (iter.repeat()) { 1.12 @@ -2554,33 +2554,6 @@ 1.13 return used * BytesPerWord; 1.14 } 1.15 1.16 -size_t MetaspaceAux::used_in_bytes(Metaspace::MetadataType mdtype) { 1.17 - assert(SafepointSynchronize::is_at_safepoint(), 1.18 - "Consistency checks require being at a safepoint"); 1.19 - size_t used = 0; 1.20 -#ifdef ASSERT 1.21 - size_t free = 0; 1.22 - size_t capacity = 0; 1.23 -#endif 1.24 - ClassLoaderDataGraphMetaspaceIterator iter; 1.25 - while (iter.repeat()) { 1.26 - Metaspace* msp = iter.get_next(); 1.27 - // Sum allocation_total for each metaspace 1.28 - if (msp != NULL) { 1.29 - used += msp->used_words(mdtype); 1.30 -#ifdef ASSERT 1.31 - free += msp->free_words(mdtype); 1.32 - capacity += msp->capacity_words(mdtype); 1.33 - assert(used + free == capacity, 1.34 - err_msg("Accounting is wrong used " SIZE_FORMAT 1.35 - " free " SIZE_FORMAT " capacity " SIZE_FORMAT, 1.36 - used, free, capacity)); 1.37 -#endif 1.38 - } 1.39 - } 1.40 - return used * BytesPerWord; 1.41 -} 1.42 - 1.43 size_t MetaspaceAux::free_in_bytes(Metaspace::MetadataType mdtype) { 1.44 size_t free = 0; 1.45 ClassLoaderDataGraphMetaspaceIterator iter; 1.46 @@ -2661,15 +2634,15 @@ 1.47 out->print_cr(" Metaspace total " 1.48 SIZE_FORMAT "K, used " SIZE_FORMAT "K," 1.49 " reserved " SIZE_FORMAT "K", 1.50 - capacity_in_bytes()/K, used_in_bytes_unsafe()/K, reserved_in_bytes()/K); 1.51 + capacity_in_bytes()/K, used_in_bytes()/K, reserved_in_bytes()/K); 1.52 out->print_cr(" data space " 1.53 SIZE_FORMAT "K, used " SIZE_FORMAT "K," 1.54 " reserved " SIZE_FORMAT "K", 1.55 - capacity_in_bytes(nct)/K, used_in_bytes_unsafe(nct)/K, reserved_in_bytes(nct)/K); 1.56 + capacity_in_bytes(nct)/K, used_in_bytes(nct)/K, reserved_in_bytes(nct)/K); 1.57 out->print_cr(" class space " 1.58 SIZE_FORMAT "K, used " SIZE_FORMAT "K," 1.59 " reserved " SIZE_FORMAT "K", 1.60 - capacity_in_bytes(ct)/K, used_in_bytes_unsafe(ct)/K, reserved_in_bytes(ct)/K); 1.61 + capacity_in_bytes(ct)/K, used_in_bytes(ct)/K, reserved_in_bytes(ct)/K); 1.62 } 1.63 1.64 // Print information for class space and data space separately.
2.1 --- a/src/share/vm/memory/metaspace.hpp Wed Sep 05 20:08:08 2012 -0400 2.2 +++ b/src/share/vm/memory/metaspace.hpp Thu Sep 06 07:28:30 2012 -0700 2.3 @@ -149,10 +149,6 @@ 2.4 2.5 // Statistics for class space and data space in metaspace. 2.6 static size_t used_in_bytes(Metaspace::MetadataType mdtype); 2.7 - // Same as used_in_bytes() without the consistency checking. 2.8 - // Use this version if not at a safepoint (so consistency is 2.9 - // not necessarily expected). 2.10 - static size_t used_in_bytes_unsafe(Metaspace::MetadataType mdtype); 2.11 static size_t free_in_bytes(Metaspace::MetadataType mdtype); 2.12 static size_t capacity_in_bytes(Metaspace::MetadataType mdtype); 2.13 static size_t reserved_in_bytes(Metaspace::MetadataType mdtype); 2.14 @@ -167,11 +163,6 @@ 2.15 used_in_bytes(Metaspace::NonClassType); 2.16 } 2.17 2.18 - static size_t used_in_bytes_unsafe() { 2.19 - return used_in_bytes_unsafe(Metaspace::ClassType) + 2.20 - used_in_bytes_unsafe(Metaspace::NonClassType); 2.21 - } 2.22 - 2.23 // Total of available space in all Metaspaces 2.24 // Total of capacity allocated to all Metaspaces. This includes 2.25 // space in Metachunks not yet allocated and in the Metachunk
3.1 --- a/src/share/vm/memory/metaspaceCounters.cpp Wed Sep 05 20:08:08 2012 -0400 3.2 +++ b/src/share/vm/memory/metaspaceCounters.cpp Thu Sep 06 07:28:30 2012 -0700 3.3 @@ -35,7 +35,7 @@ 3.4 size_t min_capacity = MetaspaceAux::min_chunk_size(); 3.5 size_t max_capacity = MetaspaceAux::reserved_in_bytes(); 3.6 size_t curr_capacity = MetaspaceAux::capacity_in_bytes(); 3.7 - size_t used = MetaspaceAux::used_in_bytes_unsafe(); 3.8 + size_t used = MetaspaceAux::used_in_bytes(); 3.9 3.10 initialize(min_capacity, max_capacity, curr_capacity, used); 3.11 } 3.12 @@ -131,7 +131,7 @@ 3.13 3.14 void MetaspaceCounters::update_used() { 3.15 assert(UsePerfData, "Should not be called unless being used"); 3.16 - size_t used_in_bytes = MetaspaceAux::used_in_bytes_unsafe(); 3.17 + size_t used_in_bytes = MetaspaceAux::used_in_bytes(); 3.18 _used->set_value(used_in_bytes); 3.19 } 3.20