src/share/vm/memory/metaspaceCounters.cpp

changeset 5015
868d87ed63c8
parent 4680
0624b9d81255
child 5531
1a8fb39bdbc4
     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  

mercurial