< prev index next >
src/share/vm/runtime/synchronizer.cpp
Print this page
rev 13098 : imported patch deflation
rev 13099 : imported patch deflation_2
rev 13100 : [mq]: deflation_3
*** 960,969 ****
--- 960,981 ----
block = block->FreeNext;
assert(block == NULL || block->object() == CHAINMARKER, "must be a block header");
return block;
}
+ static bool monitors_used_above_threshold() {
+ int monitors_used = gMonitorPopulation - gMonitorFreeCount;
+ int monitor_useage = (monitors_used * 100LL) / gMonitorPopulation;
+ return monitor_useage > MonitorUsedDeflationThreshold;
+ }
+
+ bool ObjectSynchronizer::is_cleanup_needed() {
+ if (MonitorUsedDeflationThreshold > 0) {
+ return monitors_used_above_threshold();
+ }
+ return false;
+ }
void ObjectSynchronizer::oops_do(OopClosure* f) {
if (MonitorInUseLists) {
// When using thread local monitor lists, we only scan the
// global used list here (for moribund threads), and
< prev index next >