mirror of
https://github.com/openjdk/jdk.git
synced 2025-08-27 23:04:50 +02:00
8038265: CMS: enable time based triggering of concurrent cycles
Reviewed-by: mgerdin, brutisso
This commit is contained in:
parent
1e094bab2d
commit
bc55ed0b83
2 changed files with 28 additions and 0 deletions
|
@ -1512,6 +1512,8 @@ bool CMSCollector::shouldConcurrentCollect() {
|
|||
gclog_or_tty->print_cr("cms_allocation_rate=%g", stats().cms_allocation_rate());
|
||||
gclog_or_tty->print_cr("occupancy=%3.7f", _cmsGen->occupancy());
|
||||
gclog_or_tty->print_cr("initiatingOccupancy=%3.7f", _cmsGen->initiating_occupancy());
|
||||
gclog_or_tty->print_cr("cms_time_since_begin=%3.7f", stats().cms_time_since_begin());
|
||||
gclog_or_tty->print_cr("cms_time_since_end=%3.7f", stats().cms_time_since_end());
|
||||
gclog_or_tty->print_cr("metadata initialized %d",
|
||||
MetaspaceGC::should_concurrent_collect());
|
||||
}
|
||||
|
@ -1574,6 +1576,28 @@ bool CMSCollector::shouldConcurrentCollect() {
|
|||
return true;
|
||||
}
|
||||
|
||||
// CMSTriggerInterval starts a CMS cycle if enough time has passed.
|
||||
if (CMSTriggerInterval >= 0) {
|
||||
if (CMSTriggerInterval == 0) {
|
||||
// Trigger always
|
||||
return true;
|
||||
}
|
||||
|
||||
// Check the CMS time since begin (we do not check the stats validity
|
||||
// as we want to be able to trigger the first CMS cycle as well)
|
||||
if (stats().cms_time_since_begin() >= (CMSTriggerInterval / ((double) MILLIUNITS))) {
|
||||
if (Verbose && PrintGCDetails) {
|
||||
if (stats().valid()) {
|
||||
gclog_or_tty->print_cr("CMSCollector: collect because of trigger interval (time since last begin %3.7f secs)",
|
||||
stats().cms_time_since_begin());
|
||||
} else {
|
||||
gclog_or_tty->print_cr("CMSCollector: collect because of trigger interval (first collection)");
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
|
@ -1931,6 +1931,10 @@ class CommandLineFlags {
|
|||
"not just one of the generations (e.g., G1). A value of 0 " \
|
||||
"denotes 'do constant GC cycles'.") \
|
||||
\
|
||||
manageable(intx, CMSTriggerInterval, -1, \
|
||||
"Commence a CMS collection cycle (at least) every so many " \
|
||||
"milliseconds (0 permanently, -1 disabled)") \
|
||||
\
|
||||
product(bool, UseCMSInitiatingOccupancyOnly, false, \
|
||||
"Only use occupancy as a criterion for starting a CMS collection")\
|
||||
\
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue