< prev index next >
src/hotspot/share/gc/z/zDriver.cpp
Print this page
@@ -248,21 +248,15 @@
case GCCause::_z_warmup:
case GCCause::_z_allocation_rate:
case GCCause::_z_allocation_stall:
case GCCause::_z_proactive:
case GCCause::_z_high_usage:
+ case GCCause::_metadata_GC_threshold:
// Start asynchronous GC
_gc_cycle_port.send_async(cause);
break;
- case GCCause::_metadata_GC_threshold:
- // Start asynchronous GC, but only if the GC is warm
- if (ZStatCycle::is_warm()) {
- _gc_cycle_port.send_async(cause);
- }
- break;
-
case GCCause::_gc_locker:
// Restart VM operation previously blocked by the GC locker
_gc_locker_port.signal();
break;
@@ -350,17 +344,19 @@
ZHeap::heap()->check_out_of_memory();
}
class ZDriverGCScope : public StackObj {
private:
- GCIdMark _gc_id;
- GCCauseSetter _gc_cause_setter;
- ZStatTimer _timer;
+ GCIdMark _gc_id;
+ GCCause::Cause _gc_cause;
+ GCCauseSetter _gc_cause_setter;
+ ZStatTimer _timer;
public:
ZDriverGCScope(GCCause::Cause cause) :
_gc_id(),
+ _gc_cause(cause),
_gc_cause_setter(ZCollectedHeap::heap(), cause),
_timer(ZPhaseCycle) {
// Update statistics
ZStatCycle::at_start();
}
@@ -369,11 +365,11 @@
// Calculate boost factor
const double boost_factor = (double)ZHeap::heap()->nconcurrent_worker_threads() /
(double)ZHeap::heap()->nconcurrent_no_boost_worker_threads();
// Update statistics
- ZStatCycle::at_end(boost_factor);
+ ZStatCycle::at_end(_gc_cause, boost_factor);
// Update data used by soft reference policy
Universe::update_heap_info_at_gc();
}
};
< prev index next >