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