< 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 >