< prev index next >

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

Print this page
rev 60541 : [mq]: 8245511-base
rev 60542 : [mq]: 8245511-rev.3

*** 22,42 **** * */ #include "precompiled.hpp" #include "gc/g1/g1OldGenAllocationTracker.hpp" G1OldGenAllocationTracker::G1OldGenAllocationTracker() : ! _last_cycle_old_bytes(0), ! _last_cycle_duration(0.0), ! _allocated_bytes_since_last_gc(0) { } ! void G1OldGenAllocationTracker::reset_after_full_gc() { ! _last_cycle_duration = 0; ! reset_cycle_after_gc(); } ! void G1OldGenAllocationTracker::reset_after_young_gc(double allocation_duration_s) { ! _last_cycle_duration = allocation_duration_s; ! reset_cycle_after_gc(); ! } \ No newline at end of file --- 22,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; ! }
< prev index next >