1.1 --- a/src/share/vm/memory/metaspaceCounters.cpp Thu Apr 18 10:09:23 2013 -0700 1.2 +++ b/src/share/vm/memory/metaspaceCounters.cpp Tue Feb 12 14:15:45 2013 -0800 1.3 @@ -29,6 +29,16 @@ 1.4 1.5 MetaspaceCounters* MetaspaceCounters::_metaspace_counters = NULL; 1.6 1.7 +size_t MetaspaceCounters::calc_total_capacity() { 1.8 + // The total capacity is the sum of 1.9 + // 1) capacity of Metachunks in use by all Metaspaces 1.10 + // 2) unused space at the end of each Metachunk 1.11 + // 3) space in the freelist 1.12 + size_t total_capacity = MetaspaceAux::allocated_capacity_bytes() 1.13 + + MetaspaceAux::free_bytes() + MetaspaceAux::free_chunks_total_in_bytes(); 1.14 + return total_capacity; 1.15 +} 1.16 + 1.17 MetaspaceCounters::MetaspaceCounters() : 1.18 _capacity(NULL), 1.19 _used(NULL), 1.20 @@ -36,8 +46,8 @@ 1.21 if (UsePerfData) { 1.22 size_t min_capacity = MetaspaceAux::min_chunk_size(); 1.23 size_t max_capacity = MetaspaceAux::reserved_in_bytes(); 1.24 - size_t curr_capacity = MetaspaceAux::capacity_in_bytes(); 1.25 - size_t used = MetaspaceAux::used_in_bytes(); 1.26 + size_t curr_capacity = calc_total_capacity(); 1.27 + size_t used = MetaspaceAux::allocated_used_bytes(); 1.28 1.29 initialize(min_capacity, max_capacity, curr_capacity, used); 1.30 } 1.31 @@ -82,15 +92,13 @@ 1.32 1.33 void MetaspaceCounters::update_capacity() { 1.34 assert(UsePerfData, "Should not be called unless being used"); 1.35 - assert(_capacity != NULL, "Should be initialized"); 1.36 - size_t capacity_in_bytes = MetaspaceAux::capacity_in_bytes(); 1.37 - _capacity->set_value(capacity_in_bytes); 1.38 + size_t total_capacity = calc_total_capacity(); 1.39 + _capacity->set_value(total_capacity); 1.40 } 1.41 1.42 void MetaspaceCounters::update_used() { 1.43 assert(UsePerfData, "Should not be called unless being used"); 1.44 - assert(_used != NULL, "Should be initialized"); 1.45 - size_t used_in_bytes = MetaspaceAux::used_in_bytes(); 1.46 + size_t used_in_bytes = MetaspaceAux::allocated_used_bytes(); 1.47 _used->set_value(used_in_bytes); 1.48 } 1.49