< prev index next >

src/hotspot/share/gc/g1/g1OldGenAllocationTracker.cpp

Print this page
rev 60584 : imported patch 8245511-ihop
rev 60585 : [mq]: 8245511-rev1

*** 25,63 **** #include "precompiled.hpp" #include "gc/g1/g1OldGenAllocationTracker.hpp" #include "logging/log.hpp" G1OldGenAllocationTracker::G1OldGenAllocationTracker() : ! _last_period_old_bytes(0), ! _last_period_humongous_bytes(0), _humongous_bytes_after_last_gc(0), - _humongous_bytes_after_penultimate_gc(0), _allocated_bytes_since_last_gc(0), _allocated_humongous_bytes_since_last_gc(0) { } void G1OldGenAllocationTracker::reset_after_gc(size_t humongous_bytes_after_gc) { ! // Record last ! _last_period_old_bytes = _allocated_bytes_since_last_gc; ! _last_period_humongous_bytes = _allocated_humongous_bytes_since_last_gc; ! _humongous_bytes_after_penultimate_gc = _humongous_bytes_after_last_gc; _humongous_bytes_after_last_gc = humongous_bytes_after_gc; ! // Reset _allocated_bytes_since_last_gc = 0; _allocated_humongous_bytes_since_last_gc = 0; - log_debug(gc, alloc, stats)("Old generation allocation in the last mutator period, " - "old gen allocated: " SIZE_FORMAT "B, humongous allocated: " SIZE_FORMAT "B.", - _last_period_old_bytes, _last_period_humongous_bytes); } - - size_t G1OldGenAllocationTracker::last_period_net_survived_old_bytes() const { - // The upper limit of the freed region count is the number of regions allocated - // since the last gc. When more humongous regions survived the current gc than - // survived the previous one, deduct the increment. - size_t freed_humongous_bytes = _last_period_humongous_bytes; - - if (freed_humongous_bytes > 0 && _humongous_bytes_after_penultimate_gc < _humongous_bytes_after_last_gc) { - freed_humongous_bytes -= _humongous_bytes_after_last_gc - _humongous_bytes_after_penultimate_gc; - } - assert(_last_period_old_bytes >= freed_humongous_bytes, "Allocation rate cannot be negative"); - return _last_period_old_bytes - freed_humongous_bytes; - } --- 25,62 ---- #include "precompiled.hpp" #include "gc/g1/g1OldGenAllocationTracker.hpp" #include "logging/log.hpp" G1OldGenAllocationTracker::G1OldGenAllocationTracker() : ! _last_period_old_gen_bytes(0), ! _last_period_old_gen_growth(0), _humongous_bytes_after_last_gc(0), _allocated_bytes_since_last_gc(0), _allocated_humongous_bytes_since_last_gc(0) { } void G1OldGenAllocationTracker::reset_after_gc(size_t humongous_bytes_after_gc) { ! // Calculate actual increase in old, taking eager reclaim into consideration. ! size_t last_period_humongous_increase = 0; ! if (humongous_bytes_after_gc > _humongous_bytes_after_last_gc) { ! last_period_humongous_increase = humongous_bytes_after_gc - _humongous_bytes_after_last_gc; ! assert(last_period_humongous_increase <= _allocated_humongous_bytes_since_last_gc, ! "Increase larger than allocated " SIZE_FORMAT " <= " SIZE_FORMAT, ! last_period_humongous_increase, _allocated_humongous_bytes_since_last_gc); ! } ! _last_period_old_gen_growth = _allocated_bytes_since_last_gc + last_period_humongous_increase; ! ! // Calculate and record needed values. ! _last_period_old_gen_bytes = _allocated_bytes_since_last_gc + _allocated_humongous_bytes_since_last_gc; _humongous_bytes_after_last_gc = humongous_bytes_after_gc; ! ! log_debug(gc, alloc, stats)("Old generation allocation in the last mutator period, " ! "old gen allocated: " SIZE_FORMAT "B, humongous allocated: " SIZE_FORMAT "B," ! "old gen growth: " SIZE_FORMAT "B.", ! _allocated_bytes_since_last_gc, ! _allocated_humongous_bytes_since_last_gc, ! _last_period_old_gen_growth); ! ! // Reset for next mutator period. _allocated_bytes_since_last_gc = 0; _allocated_humongous_bytes_since_last_gc = 0; }
< prev index next >