< prev index next >
src/share/vm/gc_implementation/shenandoah/shenandoah_globals.hpp
Print this page
rev 10499 : [backport] Rework GC degradation on allocation failure
rev 10504 : [backport] Full GC always comes with liveness data
rev 10509 : [backport] Refactor and improve ShenandoahCodeRoots strategies
rev 10510 : [backport] Default to ShenandoahCodeRootsStyle = 2
rev 10535 : [backport] SATB buffer filtering/compaction hides unmarked objects until final-mark
rev 10548 : [backport] Forceful SATB buffer flushes should be time-periodic, not traffic-dependent
rev 10556 : [backport] Remove C2 write-barrier from .ad files
rev 10561 : [backport] Add task termination and enhanced task queue state tracking + weakrefs
rev 10565 : [backport] Elastic TLABs support for Shenandoah
rev 10571 : [backport] Complete liveness for recently allocated regions outside the allocation path
rev 10588 : [backport] Check and ensure that Shenandoah-enabled compilations succeed
* * *
[backport] Filter out not compilable methods to avoid false assertion
rev 10589 : [backport] Purge support for ShenandoahConcurrentEvacCodeRoots and ShenandoahBarriersForConst
rev 10596 : [backport] WB slowpath should assist with evacuation of adjacent objects
rev 10599 : [backport] Convert magic value to ShenandoahPacingSurcharge
rev 10603 : Disable evac assist by default until bugfixes arrive
rev 10606 : [backport] Adaptive/Traversal heuristics rewrite for allocation rate
rev 10610 : [backport] Evac assist should touch marked objects only
rev 10620 : [backport] Evac reserve: make sure GC has untouchable space to move the objects into
rev 10622 : [backport] Enable ShenandoahEvacReserveOverflow by default
rev 10625 : [backport] Soft refs should be purged reliably on allocation failure, or with compact heuristics
rev 10637 : [backport] Purge partial heuristics and connection matrix infrastructure
@@ -69,13 +69,10 @@
experimental(uintx, ShenandoahTargetNumRegions, 2048, \
"Target number of regions. We try to get around that many " \
"regions, based on ShenandoahMinRegionSize and " \
"ShenandoahMaxRegionSizeSize. ") \
\
- product(bool, UseShenandoahMatrix, false, \
- "Keep a connection matrix and use this to drive collection sets") \
- \
product(ccstr, ShenandoahGCHeuristics, "adaptive", \
"The heuristics to use in Shenandoah GC. Possible values: " \
"adaptive (adapt to maintain the given amount of free memory), " \
"static (start concurrent GC when static free heap threshold " \
"and static allocation threshold are tripped), " \
@@ -86,10 +83,14 @@
\
experimental(ccstr, ShenandoahUpdateRefsEarly, "adaptive", \
"Run a separate concurrent reference updating phase after" \
"concurrent evacuation. Possible values: 'on', 'off', 'adaptive'")\
\
+ experimental(uintx, ShenandoahEvacAssist, 10, \
+ "How many objects to evacuate on WB assist path. " \
+ "Use zero to disable.") \
+ \
product(uintx, ShenandoahRefProcFrequency, 5, \
"How often should (weak, soft, etc) references be processed. " \
"References get processed at every Nth GC cycle. " \
"Set to 0 to disable reference processing. " \
"Defaults to process references every 5 cycles.") \
@@ -111,13 +112,12 @@
\
product(bool, ShenandoahLogWarning, false, \
"Turns on logging in Shenandoah at warning level. ") \
\
product_rw(uintx, ShenandoahFullGCThreshold, 3, \
- "How many cycles in a row to do degenerated marking on " \
- "cancelled GC before triggering a full-gc" \
- "Defaults to 3") \
+ "How many back-to-back Degenerated GCs to do before triggering " \
+ "a Full GC. Defaults to 3.") \
\
product_rw(uintx, ShenandoahGarbageThreshold, 60, \
"Sets the percentage of garbage a region need to contain before " \
"it can be marked for collection. Applies to " \
"Shenandoah GC dynamic Heuristic mode only (ignored otherwise). " \
@@ -144,18 +144,44 @@
"If GC is currently running in merged update-refs mode " \
"this numbers gives the threshold when to switch to " \
"separate update-refs mode. Number is percentage relative " \
"to duration(marking)+duration(update-refs).") \
\
- experimental(uintx, ShenandoahInitFreeThreshold, 30, \
- "Initial remaining free threshold for adaptive heuristics") \
+ experimental(uintx, ShenandoahInitFreeThreshold, 70, \
+ "Initial remaining free threshold for learning steps in " \
+ "heuristics. In percents of total heap size.") \
\
experimental(uintx, ShenandoahMinFreeThreshold, 10, \
"Minimum remaining free threshold for adaptive heuristics") \
\
- experimental(uintx, ShenandoahMaxFreeThreshold, 70, \
- "Maximum remaining free threshold for adaptive heuristics") \
+ experimental(uintx, ShenandoahLearningSteps, 5, \
+ "Number of GC cycles to run in order to learn application " \
+ "and GC performance for adaptive heuristics.") \
+ \
+ experimental(uintx, ShenandoahAllocSpikeFactor, 5, \
+ "The amount of heap space to reserve for absorbing the " \
+ "allocation spikes. Larger value wastes more memory in " \
+ "non-emergency cases, but provides more safety in emergency "\
+ "cases. In percents of total heap size.") \
+ \
+ experimental(uintx, ShenandoahEvacReserve, 5, \
+ "Maximum amount of free space to reserve for evacuation. " \
+ "Larger values make GC more aggressive, while leaving less " \
+ "headroom for application to allocate in. " \
+ "In percents of free space available.") \
+ \
+ experimental(double, ShenandoahEvacWaste, 1.2, \
+ "How much waste evacuations produce within the reserved " \
+ "space. Larger values make evacuations more resilient " \
+ "against allocation failures, at expense of smaller csets " \
+ "on each cycle.") \
+ \
+ experimental(bool, ShenandoahEvacReserveOverflow, true, \
+ "Allow evacuations to overflow the reserved space. " \
+ "Enabling it will make evacuations more resilient when " \
+ "evacuation reserve/waste is incorrect, at the risk that " \
+ "application allocations run out of memory too early.") \
\
experimental(uintx, ShenandoahImmediateThreshold, 90, \
"If mark identifies more than this much immediate garbage " \
"regions, it shall recycle them, and shall not continue the "\
"rest of the GC cycle. The value is in percents of total " \
@@ -176,19 +202,15 @@
"How many items are processed during one marking step") \
\
experimental(bool, ShenandoahConcurrentScanCodeRoots, true, \
"Scan code roots concurrently, instead of during a pause") \
\
- experimental(bool, ShenandoahConcurrentEvacCodeRoots, false, \
- "Evacuate code roots concurrently, instead of during a pause. " \
- "This requires ShenandoahBarriersForConst to be enabled.") \
- \
- experimental(uintx, ShenandoahCodeRootsStyle, 1, \
+ experimental(uintx, ShenandoahCodeRootsStyle, 2, \
"Use this style to scan code cache:" \
" 0 - sequential iterator;" \
" 1 - parallel iterator;" \
- " 2 - parallel iterator with filters;") \
+ " 2 - parallel iterator with cset filters;") \
\
experimental(bool, ShenandoahUncommit, true, \
"Allow Shenandoah to uncommit unused memory.") \
\
experimental(uintx, ShenandoahUncommitDelay, 5*60*1000, \
@@ -197,26 +219,14 @@
"incur allocation stalls. Actively used regions would never be " \
"uncommitted, because they never decay. Time is in milliseconds."\
"Setting this delay to 0 effectively makes Shenandoah to " \
"uncommit the regions almost immediately.") \
\
- experimental(bool, ShenandoahBarriersForConst, false, \
- "Emit barriers for constant oops in generated code, improving " \
- "throughput. If no barriers are emitted, GC will need to " \
- "pre-evacuate code roots before returning from STW, adding to " \
- "pause time.") \
- \
experimental(bool, ShenandoahDontIncreaseWBFreq, true, \
"Common 2 WriteBarriers or WriteBarrier and a ReadBarrier only " \
"if the resulting WriteBarrier isn't executed more frequently") \
\
- experimental(bool, ShenandoahNoLivenessFullGC, true, \
- "Skip liveness counting for mark during full GC.") \
- \
- experimental(bool, ShenandoahWriteBarrierToIR, true, \
- "Convert write barrier to IR instead of using assembly blob") \
- \
experimental(bool, ShenandoahWriteBarrierCsetTestInIR, true, \
"Perform cset test in IR rather than in the stub") \
\
experimental(bool, UseShenandoahOWST, true, \
"Use Shenandoah work stealing termination protocol") \
@@ -246,13 +256,10 @@
experimental(uintx, ShenandoahControlIntervalAdjustPeriod, 1000, \
"The time period for one step in control loop interval " \
"adjustment. Lower values make adjustments faster, at the " \
"expense of higher perf overhead. Time is in milliseconds.") \
\
- diagnostic(bool, ShenandoahAllocImplicitLive, true, \
- "Treat (non-evac) allocations implicitely live") \
- \
diagnostic(bool, ShenandoahSATBBarrier, true, \
"Turn on/off SATB barriers in Shenandoah") \
\
diagnostic(bool, ShenandoahWriteBarrier, true, \
"Turn on/off write barriers in Shenandoah") \
@@ -312,14 +319,10 @@
\
experimental(intx, ShenandoahMarkScanPrefetch, 32, \
"How many objects to prefetch ahead when traversing mark bitmaps." \
"Set to 0 to disable prefetching.") \
\
- experimental(intx, ShenandoahAllocGCTries, 5, \
- "How many times to try to do GC on allocation failure." \
- "Set to 0 to never try, and fail instead.") \
- \
experimental(bool, ShenandoahFastSyncRoots, true, \
"Enable fast synchronizer roots scanning") \
\
experimental(bool, ShenandoahPreclean, true, \
"Do preclean phase before final mark") \
@@ -357,14 +360,40 @@
"Percent of free space taken as non-taxable allocations during " \
"the GC cycle. Larger value makes the pacing milder at the " \
"beginning of the GC cycle. Lower value makes the pacing less " \
"uniform during the cycle.") \
\
+ experimental(double, ShenandoahPacingSurcharge, 1.1, \
+ "Additional pacing tax surcharge to help unclutter the heap. " \
+ "Larger values makes the pacing more aggressive. Lower values " \
+ "risk GC cycles finish with less memory than were available at " \
+ "the beginning of it.") \
+ \
+ experimental(uintx, ShenandoahCriticalFreeThreshold, 1, \
+ "Percent of heap that needs to be free after recovery cycles, " \
+ "either Degenerated or Full GC. If this much space is not " \
+ "available, next recovery step would triggered.") \
+ \
+ experimental(uintx, ShenandoahSATBBufferFlushInterval, 100, \
+ "Forcefully flush non-empty SATB buffers at this interval. " \
+ "Time is in milliseconds.") \
+ \
diagnostic(bool, ShenandoahAllowMixedAllocs, true, \
"Allow mixing mutator and collector allocations in a single " \
"region") \
\
+ diagnostic(bool, ShenandoahTerminationTrace, false, \
+ "Tracing task termination timings") \
+ \
+ diagnostic(bool, ShenandoahElasticTLAB, true, \
+ "Use Elastic TLABs with Shenandoah") \
+ \
+ diagnostic(bool, ShenandoahCompileCheck, false, \
+ "Assert that methods are successfully compilable") \
+ \
+ experimental(bool, ShenandoahAlwaysClearSoftRefs, false, \
+ "Clear soft references unconditionally") \
SHENANDOAH_FLAGS(DECLARE_DEVELOPER_FLAG, \
DECLARE_PD_DEVELOPER_FLAG, \
DECLARE_PRODUCT_FLAG, \
DECLARE_PD_PRODUCT_FLAG, \
< prev index next >