VM Options Explorer - GraalVM EE JDK16

Hey Reader! If these notes float your boat you'll find more great JVM info in this book I co-wrote! Optimizing Java: Practical techniques for improving JVM application performance
NameTypeDefaultDescription
Type
AOTInliningDepthToSizeRateDouble2.5
AOTInliningSizeMaximumInteger300
AOTInliningSizeMinimumInteger50
AOTVerifyOopsBooleanfalse
Generate verify oop checks in AOT code
ASMInstructionProfilingStringnull
Enables instruction profiling on assembler level. Valid values are a
comma separated list of supported instructions. Compare with subclasses
of Assembler.InstructionCounter.
AbortOnBenchmarkCounterOverflowBooleanfalse
Abort VM with SIGILL if benchmark counters controlled by the
(Generic|Timed|Benchmark)DynamicCounters
option overflow. This feature is only supported on AMD64.
WARNING: No descriptive error message will be printed! In case of an overflow,
manual inspection of the emitted code is required.
ActiveProcessorCountInteger-1
Overwrites the available number of processors provided by the OS. Any
value <= 0 means using the processor count from the OS.
AggregatedMetricsFileStringnull
File to which aggregated metrics are dumped at shutdown. A CSV format
is used if the file ends with .csv otherwise a more human readable
format is used. If not specified, metrics are dumped to the console.
AliasArrayTypeFlowsBooleantrue
Model all array type flows using a unique elements type flow
abstraction.
AllocationProfilingThresholdInteger1048576
The minimum size in bytes required for printing an allocation profiling
entry
AllocationSiteSensitiveHeapBooleanfalse
A context sensitive heap means that each heap allocated object is
modeled by using at least the allocation site.
AlwaysInlineIntrinsicsBooleanfalse
Unconditionally inline intrinsics
AlwaysInlineVTableStubsBooleanfalse
AlwaysPreTouchBooleanfalse
Force all freshly committed pages to be pre-touched
AnalysisContextSensitivityString"insens"
Controls the static analysis context sensitivity. Available values:
insens (context insensitive analysis), allocsens (context insensitive
analysis, context insensitive heap, allocation site sensitive heap),
_1obj (1 object sensitive analysis with a context insensitive heap),
_2obj1h (2 object sensitive with a 1 context sensitive heap)
AnalysisSizeCutoffInteger8
The maximum size of type and method profiles returned by the static
analysis. -1 indicates no limitation.
AnalysisStatisticsFileStringnull
Analysis results statistics file.
AuditHandlesBooleanfalse
Record stack trace along with scoped foreign object reference wrappers to debug issue with a wrapper being used after its scope has closed.
BaseTargetSpendingInteger120
The base target spending used to estimate the inlining threshold; the
higher, the likelier it is to inline.
BenchmarkCounterPrintingCutoffBooleantrue
Use a cutoff to print only most significant counters.
BenchmarkCountersDumpDynamicBooleantrue
Dump dynamic counters
BenchmarkCountersDumpStaticBooleanfalse
Dump static counters
BenchmarkCountersFileStringnull
File to which benchmark counters are dumped. A CSV format is used if
the file ends with .csv otherwise a more human readable format is used.
The fields in the CSV format are: category, group, name, value
BenchmarkDynamicCountersStringnull
Turn on the benchmark counters. The format of this option is:
          
  (err|out),start pattern,end pattern
  
Start counting when the start pattern matches on the given stream and stop when the end pattern occurs.
You can use "~" to match 1 or more digits.
Examples:
          
  err, starting =====, PASSED in
  out,Iteration ~ (~s) begins:,Iteration ~ (~s) ends:
  
The first pattern matches DaCapo output and the second matches SPECjvm2008 output.
          
As a more detailed example, here are the options to use for getting statistics
about allocations within the DaCapo pmd benchmark:
          
  -XX:JVMCICounterSize= -XX:-JVMCICountersExcludeCompiler \
  -Dgraal.BenchmarkDynamicCounters="err, starting ====, PASSED in " \
  -Dgraal.ProfileAllocations=true
  
The JVMCICounterSize value depends on the granularity of the profiling -
10000 should be sufficient. Omit JVMCICountersExcludeCompiler to exclude
counting allocations on the compiler threads.
The counters can be further configured by the ProfileAllocationsContext option.
          
We highly recommend the use of -Dgraal.AbortOnBenchmarkCounterOverflow=true to
detect counter overflows eagerly.
BootstrapInitializeOnlyBooleanfalse
Do not compile anything on bootstrap but just initialize the compiler.
BootstrapTimeoutDouble15.0
Maximum time in minutes to spend bootstrapping (0 to disable this
limit).
BootstrapWatchDogCriticalRateRatioDouble0.25
Ratio of the maximum compilation rate below which the bootstrap
compilation rate must not fall (0 or less disables monitoring).
BouncyCastleIntrinsicsBooleantrue
Enable native intrinsics for BouncyCastle.
BreakChainedPhisBooleantrue
Break chained phis
CallGraphCompilerNodeLimitInteger35000
Controls the maximum number of compiler nodes that can appear in the
call graph
CallGraphSizeLimitInteger1200
Controls the maximum size of the call graph before ceasing inlining.
CallGraphSizePenaltyCoefficientDouble0.001
Reduces the likelihood of exploring call graph subtrees that are large.
CanOmitFrameBooleantrue
CanonicalGraphStringsCheckConstantsBooleanfalse
Exclude virtual nodes when dumping canonical text for graphs.
CanonicalGraphStringsExcludeVirtualsBooleantrue
Exclude virtual nodes when dumping canonical text for graphs.
CanonicalGraphStringsRemoveIdentitiesBooleantrue
Attempts to remove object identity hashes when dumping canonical text
for graphs.
ClearMetricsAfterBootstrapBooleanfalse
Clear the debug metrics after bootstrap.
CollectYoungGenerationSeparatelyBooleanfalse
Determines if a full GC collects the young generation separately or
together with the old generation.
CompilationBailoutAsFailureBooleanfalse
Treat compilation bailouts like compilation failures.
CompilationCountLimitInteger0
The number of compilations allowed for any method before the VM exits
(a value of 0 means there is no limit).
CompilationExcludePhasesStringnull
Exclude certain phases from compilation, either unconditionally or with
a method filter
CompilationExpirationPeriodInteger300
Time limit in seconds before a compilation expires (0 to disable the
limit). A non-zero value for this option is doubled if assertions are
enabled and quadrupled if DetailedAsserts is true.
CompilationFailureActionStringSilent
Specifies the action to take when compilation fails.
          
The accepted values are:
    Silent  - Print nothing to the console.
     Print  - Print a stack trace to the console.
  Diagnose* - Retry the compilation with extra diagnostics.
    ExitVM  - Same as Diagnose except that the VM process exits after retrying.
    
* If "Diagnose" is set compilation will be retried with extra diagnostics enabled including dumping (see file:doc-files/DumpHelp.txt). 
  In such a scenario DiagnoseDumpLevel can be used to specify the dump level (DebugContext dump levels) accordingly.
      
CompilationIsolateAddressSpaceSizeLong0
Size of the reserved address space of each compilation isolate (0:
default for new isolates).
CompilationWatchDogStackTraceIntervalDouble60.0
Interval in seconds between a watch dog reporting stack traces for long
running compilations.
CompilationWatchDogStartDelayDouble0.0
Delay in seconds before watch dog monitoring a compilation (0 disables
monitoring).
CompileGraalWithC1OnlyBooleantrue
In tiered mode compile Graal and JVMCI using optimized first tier code.
CompileInIsolatesBooleantrue
Activate runtime compilation in separate isolates (enable support
during image build with option SupportCompileInIsolates).
CompileInPerThreadReusedIsolatesBooleantrue
Create one reusable isolate per compilation thread as opposed to one
isolate per compilation (enable through CompileInIsolates).
CompilerConfigurationStringnull
Names the compiler configuration to use. If omitted, the compiler
configuration with the highest auto-selection priority is used. To see
the set of available configurations, supply the value 'help' to this
option.
CompilerNodePenaltyCoefficientDouble0.006
Controls the likelihood of exploring subtrees that already have a lot
of code during inlining.
CompilerStringnull
Selects the system compiler. This must match the getCompilerName() value returned by a jdk.vm.ci.runtime.JVMCICompilerFactory provider. An empty string or the value "null" selects a compiler that will raise an exception upon receiving a compilation request.
ConcGCThreadsInteger0
Number of threads concurrent gc will use
ConditionalEliminationMaxIterationsInteger4
ConditionalEliminationBooleantrue
ConsiderVectorizableLoopsBooleantrue
Consider the vectorizability of loop during the duplication of a merge
inside a loop.There are rare cases where duplication can destroy
vectorization.
CostNewLiveVariableInteger4
PullThroughPhiOptimization: Abstract cost for the creation of a new
live value: new values can have a negativeimpact on register
allocation, therefore we penalize it.
CostReductionFactorDouble32.0
PullThroughPhiOptimization: Cost/Benefit heuristic for EE floating node
duplication: reduce cost by a constant factor when comparing with
relative benefit.
CountStringnull
Pattern for specifying scopes in which counters are enabled. See the
Dump option for the pattern syntax. An empty value enables all counters
unconditionally.
CountersStringnull
Comma separated names of counters that are enabled irrespective of the
value for Count option. An empty value enables all counters
unconditionally.
CrashAtIsFatalBooleanfalse
Converts an exception triggered by the CrashAt option into a fatal
error if a non-null pointer was passed in the _fatal option to
JNI_CreateJavaVM. This option exists for the purpose of testing fatal
error handling in libgraal.
CrashAtStringnull
Pattern for method(s) that will trigger an exception when compiled.
This option exists to test handling compilation crashes gracefully. See
the MethodFilter option for the pattern syntax. A ':Bailout' suffix
will raise a bailout exception and a ':PermanentBailout' suffix will
raise a permanent bailout exception.
CutoffCodeSizePenaltyCoefficientDouble1.0E-5
Controls the likelihood of further exploring subtrees with a lot of
code during inlining.
DebugPeelingSynonymsBooleanfalse
Debug simulation synonyms during simulation-based loop peeling.
DebugStubsAndSnippetsBooleanfalse
Enable debug output for stub code generation and snippet preparation.
DeoptALotBooleanfalse
DeoptAfterOSRBooleantrue
Deoptimize OSR compiled code when the OSR entry loop is finished if
there is no mature profile available for the rest of the method.
DeoptsToDisableOptimisticOptimizationInteger40
DetailedAssertsBooleanfalse
Enable expensive assertions if normal assertions (i.e. -ea or -esa) are
enabled.
DetectInvertedLoopsAsCountedBooleantrue
DiagnoseDumpLevelInteger3
Specify the DumpLevel if CompilationFailureAction#Diagnose is used.See
CompilationFailureAction for details.
file:doc-files/CompilationFailureActionHelp.txt
DisableExplicitGCBooleanfalse
Ignore calls to System.gc()
DisableInterceptBooleanfalse
Disable intercepting exceptions in debug scopes.
DivertParameterReturningMethodBooleantrue
Analysis: Detect methods that return one of their parameters and
hardwire the parameter straight to the return.
DominatorUsageTreeMaxDepthInteger16
DumpAfterEveryBCIBooleanfalse
Dump the current graph after every bci to IGV.
DumpOnErrorBooleanfalse
Send compiler IR to dump handlers on error.
DumpOnPhaseChangeStringnull
Dump a before and after graph if the named phase changes the
graph.%nThe argument is substring matched against the simple name of
the phase class
DumpPathString"graal_dumps"
The directory where various Graal dump files are written.
DumpStringnull
Filter pattern for specifying scopes in which dumping is enabled.
          
A filter is a list of comma-separated terms of the form:
 
  [:]
 
If  contains a "*" or "?" character, it is interpreted as a glob pattern.
Otherwise, it is interpreted as a substring. If  is empty, it
matches every scope. If : is omitted, it defaults to 1. The term
~ is a shorthand for :0 to disable a debug facility for a pattern.
          
The default log level is 0 (disabled). Terms with an empty pattern set
the default log level to the specified value. The last
matching term with a non-empty pattern selects the level specified. If
no term matches, the log level is the default level. A filter with no
terms matches every scope with a log level of 1.
          
Examples of debug filters:
--------- 
  (empty string)
          
  Matches any scope with level 1.
--------- 
  :1
          
  Matches any scope with level 1.
--------- 
  *
          
  Matches any scope with level 1.
--------- 
  CodeGen,CodeInstall
          
  Matches scopes containing "CodeGen" or "CodeInstall", both with level 1.
--------- 
  CodeGen:2,CodeInstall:1
          
  Matches scopes containing "CodeGen" with level 2, or "CodeInstall" with level 1.
---------
  Outer:2,Inner:0}
          
  Matches scopes containing "Outer" with log level 2, or "Inner" with log level 0. If the scope
  name contains both patterns then the log level will be 0. This is useful for silencing subscopes.
---------
  :1,Dead:2
          
  Matches scopes containing "Dead" with level 2, and all other scopes with level 1.
--------- 
  Dead:0,:1
          
  Matches all scopes with level 1, except those containing "Dead".   Note that the location of
  the :1 doesn't matter since it's specifying the default log level so it's the same as
  specifying :1,Dead:0.
--------- 
  Code*
          
  Matches scopes starting with "Code" with level 1.
--------- 
  Code,~Dead
          
  Matches scopes containing "Code" but not "Dead", with level 1.
DumpingErrorsAreFatalBooleanfalse
Treat any exceptions during dumping as fatal.
DuplicateALotBooleanfalse
Perform Duplications as long as there is any sane improvement.
DuplicateIrreducibleLoopsBooleantrue
When enabled, some limited amount of duplication will be performed in
order compile code containing irreducible loops.
DuplicationBudgetFactorLateDouble0.5
Percentage in node cost graph size for the late duplication budget.
Computed relative to the methods code size.
DuplicationBudgetFactorDouble0.25
Percentage in node cost graph size for the duplication budget. Computed
relative to the methods code size.
DuplicationCostReductionFactorInteger64
Cost/Benefit heuristic for EE simulation-based code duplication: reduce
cost by a constant factor when comparing with relative benefit.
DuplicationMinBranchFrequencyDouble0.66
Ignore low frequency branches during duplication.
DynamicCountersPrintGroupSeparatorBooleantrue
Use grouping separators for number printing
EagerSnippetsBooleantrue
Eagerly construct extra snippet info.
EmitStringSubstitutionsBooleantrue
Emit substitutions for String methods
EnterpriseCloneReadEliminationBooleantrue
Try to eliminate array clone operations by handling clone operations in
early read elimination.
EnterpriseEarlyReadEliminationBooleantrue
Run more read eliminations early in the compilation pipeline.
EnterprisePartialUnrollBooleantrue
Enable EE version of partial loop unrolling that considers more loop
shapes for unrolling.
ErgoHeapSizeLimitLong0
Maximum ergonomically set heap size (in bytes); zero means use MaxRAM *
MaxRAMPercentage / 100
EscapeAnalysisIterationsInteger2
EscapeAnalysisLoopCutoffInteger20
EscapeAnalyzeOnlyStringnull
ExactFullUnrollMaxNodesInteger800
ExactPartialUnrollMaxNodesInteger200
ExcludeFunctionFromDuplicationStringnull
Exclude compilations that MethodFilter.match this string from the
duplication optimization.
ExhaustiveHeapScanBooleanfalse
Scan all objects reachable from roots for analysis. By default false.
ExitVMOnExceptionBooleanfalse
Alias for CompilationFailureAction=ExitVM.
ExpandAllProximityBonusInertiaDouble2.0
The inertia at which the expand-all proximity bonus decreases with the
number of yet unexpanded nodes.
ExpandAllProximityBonusDouble6.0
The decrease in call graph expansion pressure when there are few call
nodes left to explore.
ExpansionInertiaBaseValueInteger550
The slowness at which the expansion pressure grows with code size; the
higher it is, the slower the pressure growth.
ExpansionInertiaInvokeBonusInteger14
The extra slowness at which the expansion pressure grows with the code
size, for each extra invoke node.
ExpansionInertiaMaxInteger2000
The max slowness at which the expansion pressure grows with the code
size.
ExplicitGCInvokesConcurrentBooleanfalse
A System.gc() request invokes a concurrent collection
ExtendedAssertsBooleanfalse
Enable extended asserts which slow down analysis.
FailedLoopExplosionIsFatalBooleanfalse
Do not bail out but throw an exception on failed loop explosion.
FallbackExecutorRuntimeJavaArgStrings*
Internal option used to specify runtime java arguments for
FallbackExecutor.
FlightRecorderLoggingString"all=warning"
Usage: -XX:FlightRecorderLogging=[tag1[+tag2...][*][=level][,...]]
          
When this option is not set, logging is enabled at a level of WARNING.
When this option is set to the empty string, logging is enabled at a level of INFO.
When this option is set to "disable", logging is disabled entirely.
          
Otherwise, this option expects a comma separated list of tag combinations, each with an optional wildcard (*) and level.
A tag combination without a level is given a default level of INFO.
Messages with tags that match a given tag combination are set to log at that tag combination's level.
If a tag combination does not have a wildcard, then only messages with exactly the same tags are matched.
Otherwise, messages whose tags are a subset of the tag combination are matched.
Specifying "all" instead of a tag combination matches all tag combinations.
If more than one tag combination matches a message's tags, the rightmost one will apply.
Messages with tags that do not have any matching tag combinations are set to log at a default level of WARNING.
This option is case insensitive.
          
Available log levels:
[trace, debug, info, warning, error, off]
          
Available log tags:
[jfr, system, event, setting, bytecode, parser, metadata, dcmd]
FlightRecorderBooleanfalse
Enable Java Flight Recorder.
ForceDumpGraphsBeforeCompilationBooleanfalse
Force-dump graphs before compilation
ForceUnrollBooleanfalse
Force partial unrolling of loops if at all possible.
FullUnrollAsPEACleanupBooleantrue
Perform full unrolling as a Partial Escape Analysis Cleanup
FullUnrollConstantCompareBoostInteger15
FullUnrollMaxApplicationInteger60
FullUnrollMaxIterationsInteger600
FullUnrollMaxNodesInteger400
FullUnrollBooleantrue
G1ConcMarkStepDurationMillisDouble10.0
Target duration of individual concurrent marking steps in milliseconds.
G1ConcRSHotCardLimitLong4
The threshold that defines (>=) a hot card.
G1ConcRSLogCacheSizeLong10
Log base 2 of the length of conc RS hot-card cache.
G1ConcRefinementGreenZoneLong0
The number of update buffers that are left in the queue by the
concurrent processing threads. Will be selected ergonomically by
default.
G1ConcRefinementRedZoneLong0
Maximum number of enqueued update buffers before mutator threads start
processing new ones instead of enqueueing them. Will be selected
ergonomically by default.
G1ConcRefinementServiceIntervalMillisLong300
The last concurrent refinement thread wakes up every specified number
of milliseconds to do miscellaneous work.
G1ConcRefinementThreadsInteger0
The number of parallel rem set update threads. Will be set
ergonomically by default.
G1ConcRefinementThresholdStepLong2
Each time the rset update queue increases by this amount activate the
next refinement thread if available. The actual step size will be
selected ergonomically by default, with this value used to determine a
lower bound.
G1ConcRefinementYellowZoneLong0
Number of enqueued update buffers that will trigger concurrent
processing. Will be selected ergonomically by default.
G1ConfidencePercentInteger50
Confidence level for MMU/pause predictions.
G1HeapWastePercentInteger5
Amount of space, expressed as a percentage of the heap size, that G1 is
willing not to collect to avoid expensive GCs.
G1MixedGCCountTargetLong8
The target number of mixed GCs after a marking cycle.
G1PeriodicGCIntervalLong0
Number of milliseconds after a previous GC to wait before triggering a
periodic gc. A value of zero disables periodically enforced gc cycles.
G1PeriodicGCInvokesConcurrentBooleantrue
Determines the kind of periodic GC. Set to true to have G1 perform a
concurrent GC as periodic GC, otherwise use a STW Full GC.
G1PeriodicGCSystemLoadThresholdDouble0.0
Maximum recent system wide load as returned by the 1m value of
getloadavg() at which G1 triggers a periodic GC. A load above this
value cancels a given periodic GC. A value of zero disables this check.
G1RSetRegionEntriesLong0
Max number of regions for which we keep bitmaps. Will be set
ergonomically by default
G1RSetSparseRegionEntriesLong0
Max number of entries per region in a sparse table. Will be set
ergonomically by default.
G1RSetUpdatingPauseTimePercentInteger10
A target percentage of time that is allowed to be spend on process RS
update buffers during the collection pause.
G1RefProcDrainIntervalInteger1000
The number of discovered reference objects to process before draining
concurrent marking work queues.
G1ReservePercentInteger10
It determines the minimum reserve we should have in the heap to
minimize the probability of promotion failure.
G1SATBBufferEnqueueingThresholdPercentInteger60
Before enqueueing them, each mutator thread tries to do some filtering
on the SATB buffers it generates. If post-filtering the percentage of
retained entries is over this threshold the buffer will be enqueued for
processing. A value of 0 specifies that mutator threads should not do
such filtering.
G1SATBBufferSizeLong1024
Number of entries in an SATB log buffer.
G1UpdateBufferSizeLong256
Size of an update buffer.
G1UseAdaptiveConcRefinementBooleantrue
Select green, yellow and red zones adaptively to meet the the pause
requirements.
G1UseAdaptiveIHOPBooleantrue
Adaptively adjust the initiating heap occupancy from the initial value
of InitiatingHeapOccupancyPercent. The policy attempts to start marking
in time based on application behavior.
G1VerifyBitmapsBooleanfalse
Verifies the consistency of the marking bitmaps
G1VerifyHeapRegionCodeRootsBooleanfalse
Verify the code root lists attached to each heap region.
G1VerifyRSetsDuringFullGCBooleanfalse
If true, perform verification of each heap region's remembered set when
verifying the heap during a full GC.
GCDebugStartCycleInteger-1
Start tracing compiled GC barriers after N garbage collections
(disabled if N <= 0).
GCDrainStackTargetSizeLong64
Number of entries we will try to leave on the stack during parallel gc
GCPauseIntervalMillisLong201
Time slice for MMU specification
GCTimeRatioLong12
Adaptive size policy application time to GC time ratio
GenLoopSafepointsBooleantrue
GeneratePICBooleanfalse
Generate position independent code
GenerateRuntimeDebugInfoBooleanfalse
Generate debuginfo for runtime-compiled code.
GenericDynamicCountersBooleanfalse
Turn on the benchmark counters, and displays the results on VM shutdown
GraalArithmeticStubsBooleantrue
Use Graal arithmetic stubs instead of HotSpot stubs where possible
GraalCompileOnlyStringnull
A filter applied to a method the VM has selected for compilation by
Graal. A method not matching the filter is redirected to a lower tier
compiler. The filter format is the same as for the MethodFilter option.
GraphCompressionThresholdInteger70
Graal graph compression is performed when percent of live nodes falls
below this value
GuardHoistingLoopDuplicationMaxSizeInteger64
Duplicate only loops up to this estimated size
GuardHoistingLoopDuplicationMinFrequencyInteger32
Duplicate only loops with at least this frequency
GuardHoistingLoopDuplicationMinHotnessLong1
Duplicate only loops in methods executed at least this number of times
GuardHoistingLoopDuplicationBooleantrue
Duplicate certain loops and eliminate their guards
GuardPrioritiesBooleantrue
HeapSizePerGCThreadLong44040192
Size of heap (bytes) per GC thread used in calculating the number of GC
threads
HighTierInversionBooleanfalse
HighTierPartialUnrollingBooleantrue
Enable EE partial unrolling in high tier.
HotCompilationUnitBooleanfalse
Indicates whether a compilation unit is frequently invoked.
HotSpotDeoptExplicitExceptionsBooleanfalse
Testing only option that forces deopts for exception throws
HotSpotPostOnExceptionsBooleanfalse
Testing only option that forces deopts for exception throws
HotSpotPrintInliningBooleanfalse
Print inlining optimizations
HottestPercentageThresholdDouble0.125
The minimal percentage of the time spent in the method invoked from the
specific calling-context compared to the total time spent.
HybridStaticContextBooleanfalse
Enable hybrid context for static methods, i.e. uses invocation site as
context for static methods.
IgnoreBadDuplicationsBooleantrue
Ignore duplications with a bad benefit cost relation.
IgnoreDeoptUsagesBooleantrue
ImageObjectTreeExpandRootsString""
Override the default suppression of specified roots. See: Reports.md.
ImageObjectTreeExpandTypesString""
Override the default suppression of specified types. See: Reports.md.
ImageObjectTreeSuppressRootsString""
Suppress the expansion of specified roots. See: Reports.md.
ImageObjectTreeSuppressTypesString""
Suppress the expansion of specified types. See: Reports.md.
ImmutableCodeBooleanfalse
Try to avoid emitting code where patching is required
InitTimerBooleanfalse
Specifies if initialization timing is enabled.
InitialHeapSizeLong0
Initial heap size (in bytes); zero means use ergonomics
InitialRAMPercentageDouble1.5625
Percentage of real memory used for initial heap size
InitiatingHeapOccupancyPercentInteger45
The percent occupancy (IHOP) of the current old generation capacity
above which a concurrent mark cycle will be initiated. Its value may
change over time if adaptive IHOP is enabled, otherwise the value
remains constant. In the latter case a value of 0 will result as
frequent as possible concurrent marking cycles. A value of 100 disables
concurrent marking. Fragmentation waste in the old generation is not
considered free space in this calculation.
InlineAllBonusDouble1.0
The bonus applied to call nodes that can be fully inlined.
InlineBeforeAnalysisBooleanfalse
Experimental: Inline methods before static analysis
InlineDuringParsingMaxDepthInteger10
Maximum depth when inlining during bytecode parsing.
InlineDuringParsingBooleantrue
Inlines trivial methods during bytecode parsing.
InlineEverythingBooleanfalse
InlineIntrinsicsDuringParsingBooleantrue
Inlines intrinsic methods during bytecode parsing.
InlineMegamorphicCallsBooleantrue
Inline calls with megamorphic type profile (i.e., not all types could
be recorded).
InlineMonomorphicCallsBooleantrue
Inline calls with monomorphic type profile.
InlinePartialIntrinsicExitDuringParsingBooleantrue
Inlines partial intrinsic exits during bytecode parsing when possible.
A partial intrinsic exit is a call within an intrinsic to the method
being intrinsified and denotes semantics of the original method that
the intrinsic does not support.
InlinePolymorphicCallsBooleantrue
Inline calls with polymorphic type profile.
InlineVTableStubsBooleantrue
InlineBooleantrue
Enable inlining
InlinedCompilerNodeLimitInteger20000
Controls the maximum number of compiler nodes that can be inlined into
the compiled method.
InliningCoefficientDouble0.02
The coefficient used to compute the inlining threshold; the higher, the
more to inline.
InliningDepthErrorInteger1000
Maximum inlining depth during partial evaluation before reporting an
infinite recursion
InsertPreMainPostOnlyBooleanfalse
Do not unroll the main loop, only create pre-main-post.
InspectGraphsBooleanfalse
Inspect analysis graphs.
InspectServerContentPathString"inspect"
Path to the contents of the Inspect web server.
InstallSegfaultHandlerBooleannull
Install segfault handler that prints register contents and full Java
stacktrace. Default: enabled for an executable, disabled for a shared
library.
InterceptBailoutBooleanfalse
Intercept also bailout exceptions
IntrinsifyBooleantrue
Use compiler intrinsifications.
InvertMultiEndLoopsBooleanfalse
InvertNonLeafLoopsBooleanfalse
InvertVectorizableLoopsBooleanfalse
LIRDynMoveProfileMethodBooleanfalse
Enable dynamic move profiling per method.
LIROptConstantLoadOptimizationBooleantrue
Enable constant load optimization.
LIROptControlFlowOptimizerBooleantrue
LIROptEdgeMoveOptimizerBooleantrue
LIROptLSRAEliminateSpillMovesBooleantrue
Enable spill move elimination.
LIROptLSRAOptimizeSpillPositionBooleantrue
Enable spill position optimization
LIROptLSStackSlotAllocatorBooleantrue
Use linear scan stack slot allocation.
LIROptNullCheckOptimizerBooleantrue
LIROptRedundantMoveEliminationBooleantrue
LIROptStackMoveOptimizerBooleantrue
LIROptimizationBooleantrue
Enable LIR level optimiztations.
LIRProfileMethodsBooleanfalse
Enables profiling of methods.
LIRProfileMovesBooleanfalse
Enables profiling of move types on LIR level. Move types are for
example stores (register to stack), constant loads (constant to
register) or copies (register to register).
LSRAOptSplitOnlyBooleanfalse
LSRA optimization: Only split but do not reassign
LSRAOptimizationBooleanfalse
Enable LSRA optimization
LargeChildrenCountPenaltyCoefficientDouble0.005
Reduces the likelihood of exploring call graphs that have a lot of
children below the root.
LibGraalManagementDelayInteger1000
Milliseconds to delay initialization of the libgraal JMX interface.
Specify a negative value to disable the interface altogether.
LimitInlinedInvokesDouble5.0
LimitObjectArrayLengthBooleanfalse
Enable a limit for the number of objects recorded for each type of a
type state before disabling heap sensitivity for that type. The
analysis must be heap sensitive.
ListMetricsBooleanfalse
Lists on the console at VM shutdown the metric names available to the
Timers, Counters and MemUseTrackers options. Note that this only lists
the metrics that were initialized during the VM execution and so will
not include metrics for compiler code that is not executed.
LoadExceptionObjectInVMBooleanfalse
Use a VM runtime call to load and clear the exception object from the
thread at the start of a compiled exception handler.
LogFileStringnull
File to which logging is sent. A %p in the name will be replaced with a
string identifying the process, usually the process id and %t will be
replaced by System.currentTimeMillis(). If the current runtime is in an
isolate, then %i will be replaced by '' otherwise %i is
removed. An %I is the same as %i except that the replacement is
'@'. Using %o as filename sends logging to
System.out whereas %e sends logging to System.err.
LogVerboseBooleanfalse
Enable more verbose log output when available
LogStringnull
Pattern for specifying scopes in which logging is enabled. See the Dump
option for the pattern syntax.
LoopHeaderAlignmentInteger16
Alignment in bytes for loop header blocks.
LoopInversionBooleantrue
LoopMaxUnswitchInteger3
LoopPeelingBooleantrue
LoopPredicationMainPathBooleantrue
Restricts LoopPredication to only focus on array bounds checks that
dominate the back edge of a loop.
LoopPredicationBooleantrue
Hoists array bounds checks out of simple loops. This is ignored if
SpeculativeGuardMovement is enabled.
LoopUnswitchFrequencyBoostDouble10.0
LoopUnswitchMaxIncreaseInteger500
LoopUnswitchTrivialInteger10
LoopUnswitchBooleantrue
MarkStackSizeMaxLong536870912
Maximum size of marking stack
MarkStackSizeLong4194304
Size of marking stack
MatchExpressionsBooleantrue
Allow backend to match complex expressions.
MaxCallingContextDepthInteger0
The maximum length of the methods context chains.
MaxCallingContextWidthInteger0
The maximum number of contexts to record for a method. It only affects
the analysis when the max and min calling context depth are different.
MaxCompilationProblemsPerActionInteger2
The maximum number of compilation failures to handle with the action
specified by CompilationFailureAction before changing to a less verbose
action. This does not apply to the ExitVM action.
MaxConstantObjectsPerTypeInteger100
The maximum number of constant objects recorded for each type before
merging the constants into one unique constant object per type. The
analysis must be heap sensitive. It has a minimum value of 1.
MaxCpuLocalsPerCounterInteger64
Upper bound on the number of cpu locals per counter. It has to be a
power of 2.
MaxDirectMemorySizeLong0
Maximum total size of NIO direct-buffer allocations
MaxDuplicationFactorDouble2.0
How much duplication can happen because of irreducible loops before
bailing out.
MaxGCPauseMillisLong200
Adaptive size policy maximum GC pause time goal in millisecond, or the
maximum GC time per MMU time slice
MaxGraphSizeNodeCostInteger100000
Maximum node cost graph size for duplication. If a graph is bigger
duplication will stop.
MaxHeapContextDepthInteger0
The maximum length of the context used to model a heap object in
addition to the allocation site; used only when ContextSensitiveHeap is
enabled.
MaxHeapContextWidthInteger0
The maximum number of contexts to record for a heap object. It only
affects the analysis when the max and min calling context depth are
different.
MaxHeapSizeLong0
The maximum heap size at run-time, in bytes.
MaxJavaStackTraceDepthInteger1024
The maximum number of lines in the stack trace for Java exceptions (0
means all)
MaxMispredictionCostIncreaseFactorDouble2.0
Abstract measure of the cost of branch misprediction. Higher values
make generation of conditional moves more likely.
MaxNewSizeLong0
The maximum size of the young generation at run-time, in bytes
MaxObjectSetSizeInteger100
The maximum number of objects recorded for each type of a type state
before disabling heap sensitivity for that type. The analysis must be
heap sensitive. It has a minimum value of 1.
MaxPolymorphicDispatchesInteger3
The maximum number of dispatches in guarded polymorphic inlining.
MaxPriorityInliningPeelingIterationsInteger10
Max number of precise inlining peeling iterations.
MaxRAMPercentageDouble25.0
Maximum percentage of real memory used for maximum heap size
MaxRAMLong137438953472
Real memory size (in bytes) used to set maximum heap size
MaxSimulationIterationsInteger2
Maximum simulation-duplication iterations of the duplication
optimization per invocation.
MaxSplitsPerNodeInteger32
MaxTemplatesPerSnippetInteger50
MaxTenuringThresholdLong15
Maximum value for tenuring threshold
MaxVectorAlignmentUnrollInteger4
Maximum number of unrolled alignment instructions
MaxVectorUnrollInteger16
Maximum length of linear-code vector operations
MaximumDesiredSizeInteger20000
Maximum desired size of the compiler graph in nodes.
MaximumEscapeAnalysisArrayLengthInteger128
The maximum length of an array that will be escape analyzed.
MaximumHeapSizePercentInteger80
The maximum heap size as percent of physical memory
MaximumInliningSizeInteger300
Inlining is explored up to this number of nodes in the graph for each
call site.
MaximumLoopExplosionCountInteger10000
Max number of loop explosions per method.
MaximumRecursiveInliningInteger5
Maximum level of recursive inlining.
MaximumTransitiveEnabledPullFactorInteger2
PullThroughPhiOptimization: Maximum number of algorithm iterations per
optimization invocation.
MaximumYoungGenerationSizePercentInteger10
The maximum size of the young generation as a percentage of the maximum
heap size
MegamorphicInliningMinMethodProbabilityDouble0.33
Minimum probability for methods to be inlined for megamorphic type
profiles.
MemUseTrackersStringnull
Comma separated names of memory usage trackers that are enabled
irrespective of the value for TrackMemUse option. An empty value
enables all memory usage trackers unconditionally.
MethodFilterRootOnlyBooleanfalse
Only check MethodFilter against the root method in the context if true,
otherwise check all methods
MethodFilterStringnull
Pattern for matching methods. The syntax for a pattern is:
          
  SourcePatterns = SourcePattern ["," SourcePatterns] .
  SourcePattern = [ "~" ] [ Class "." ] method [ "(" [ Parameter { ";" Parameter } ] ")" ] .
  Parameter = Class | "int" | "long" | "float" | "double" | "short" | "char" | "boolean" .
  Class = { package "." } class .
          
Glob pattern matching (*, ?) is allowed in all parts of the source pattern.
The "~" prefix negates the pattern.
          
Positive patterns are joined by an "or" operator: "A,B" matches anything
matched by "A" or "B". Negative patterns are joined by "and not": "~A,~B"
matches anything not matched by "A" and not matched by "B". "A,~B,~C,D"
matches anything matched by "A" or "D" and not matched by "B" and not
matched by "C".
          
A set of patterns containing negative patterns but no positive ones contains
an implicit positive "*" pattern: "~A,~B" is equivalent to "*,~A,~B".
          
Examples of method filters:
---------
  *
          
  Matches all methods in all classes.
---------
  canonical(CanonicalizerTool;LogicNode;LogicNode)
          
  Matches all methods named "canonical", with the first parameter of type
  "CanonicalizerTool", and the second and third parameters of type
  "LogicNode".
  The packages of the parameter types are irrelevant.
---------
  arraycopy(Object;;;;)
          
  Matches all methods named "arraycopy", with the first parameter
  of type "Object", and four more parameters of any type. The
  packages of the parameter types are irrelevant.
---------
  org.graalvm.compiler.nodes.PhiNode.*
          
  Matches all methods in the class "org.graalvm.compiler.nodes.PhiNode".
---------
  org.graalvm.compiler.nodes.*.canonical
          
  Matches all methods named "canonical" in classes in the package
  "org.graalvm.compiler.nodes".
---------
  arraycopy,toString
          
  Matches all methods named "arraycopy" or "toString", meaning that ',' acts
  as an "or" operator.
---------
  java.util.*.*.,~java.util.*Array*.*
  java.util.*.*.,~*Array*.*
          
  These patterns are equivalent and match all methods in the package
  "java.util" except for classes that have "Array" in their name.
---------
  ~java.util.*.*
          
  Matches all methods in all classes in all packages except for anything in
  the "java.util" package.
MethodInlineBailoutLimitInteger5000
Per-compilation method inlining exploration limit before giving up (use
0 to disable)
MetricsFileStringnull
File to which metrics are dumped per compilation.
A CSV format is used if the file ends with .csv otherwise a more
human readable format is used. The fields in the CSV format are:
           compilable - method being compiled
  compilable_identity - identity hash code of compilable
       compilation_nr - where this compilation lies in the ordered
                        sequence of all compilations identified by
                        compilable_identity
       compilation_id - runtime issued identifier for the compilation
          metric_name - name of metric
         metric_value - value of metric
MidTierInversionBooleantrue
MidTierPartialUnrollingBooleantrue
Enable EE partial unrolling in mid tier.
MinBlockFrequencyPullDouble0.66
PullThroughPhiOptimization: Ignore low frequency branches during
duplication.
MinCallingContextDepthInteger0
The minimum length of the methods context chains.
MinHeapContextDepthInteger0
The minimum length of the context used to model a heap object in
addition to the allocation site; used only when ContextSensitiveHeap is
enabled.
MinHeapDeltaBytesLong172032
The minimum change in heap space due to GC (in bytes).
MinHeapFreeRatioLong40
The minimum percentage of heap free after GC to avoid expansion.
MinHeapSizeLong0
The minimum heap size at run-time, in bytes.
MinPolymorphicDispatchProbabilityDouble0.1
The minimum probability for using a dispatch in guarded polymorphic
inlining.
MinRAMPercentageDouble50.0
Minimum percentage of real memory used for maximum heap size on systems
with small physical memory size
MinTLABSizeLong2048
Minimum allowed TLAB size (in bytes)
MinifyInvertedPhisBooleantrue
Break chained phis
MinimalBulkZeroingSizeInteger2048
If applicable, use bulk zeroing instructions when the zeroing size in
bytes exceeds this threshold.
MinimalRegionsBooleantrue
Try to reduce duplication code size to the minimal amount of code.
MinimumPeelFrequencyFloat0.35
MoveGuardsUpwardsBooleantrue
Move guard nodes to earlier places in the dominator tree if all
successors of basic block share a common guard condition.
MultiExitCostFactorSinkInteger2
Cost/Benefit heuristic for EE unrolling: If a loop has multiple exits,
cost is increased by this value for every sinking loop exit.
MultiExitCostFactorInteger32
Cost/Benefit heuristic for EE unrolling: If a loop has multiple exits,
cost is increased by this value for every none-sinking loop exit.
NDCVInteger0
Run level for NoDeadCodeVerifyHandler (0 = off, 1 = info, 2 = verbose,
3 = fatal)
NewRatioLong2
Ratio of old/new generation sizes
NewSizeLong1048576
Initial new generation size (in bytes)
NodeCountersBooleanfalse
Counts the number of instances of each node class.
NonCountedStripMinedBenefitBoostInteger64
Benefit boost for strip mined non counted loops.
NonCountedStripMiningForceStripAllBooleanfalse
Force non-counted strip mining for all loops (also counted ones), test
flag only.
NonCountedStripMiningInnerLoopTripsInteger-1
The max number of iterations the counted inner loop takes. If -1, the
frequency of the loopwill be used to derive an inner frequency.
NonCountedStripMiningMaximumInnerLoopTripsInteger8192
If NonCountedStripMiningInnerLoopTrips == -1: Maximum loop trips for
strip mined non-counted loops.
NonCountedStripMiningMinFrequencyDouble16.0
Minimal loop frequency to consider a non-counted loop for strip mining.
NonCountedStripMiningMinimumInnerLoopTripsInteger512
If NonCountedStripMiningInnerLoopTrips == -1: Minimum loop trips for
strip mined non-counted loops.
NonCountedStripMiningReuseIVsBooleantrue
Try to reuse pre-existing induction variables inside non-counted loops
for the strip-mined loop's exit check.
NonFatalIdenticalCompilationSnapshotsInteger20
Number of contiguous identical compiler thread stack traces allowed
before the VM exits on the basis of a stuck compilation.
ObjdumpExecutablesStringnull
Comma separated list of candidate GNU objdump executables. If not
specified, disassembling via GNU objdump is disabled. Otherwise, the
first existing executable in the list is used.
OldPLABSizeLong1024
Size of old gen promotion LAB's (in HeapWords)
OldSizeLong5242880
Initial tenured generation size (in bytes)
OmitHotExceptionStacktraceBooleanfalse
OptAssumptionsBooleantrue
OptBulkAllocationBooleantrue
OptCompressedFrameStateValuesBooleantrue
OptConditionalMovesBooleantrue
Optimize simple if branches with conditional moves
OptConvertDeoptsToGuardsBooleantrue
OptDeDuplicationBooleantrue
OptDeoptimizationGroupingBooleantrue
OptDevirtualizeInvokesOptimisticallyBooleantrue
OptDuplicationBooleantrue
OptEarlyReadEliminationBooleantrue
OptEliminateGuardsBooleantrue
OptExactArithmeticBooleantrue
OptFloatingReadsBooleantrue
OptGuardRangeGroupingBooleantrue
OptImplicitNullChecksBooleantrue
OptLateDuplicationBooleanfalse
OptLockEliminationBooleantrue
OptLoopLimitStampsBooleantrue
Try to create more precise loop limit stamps based on dominating
guards.
OptLoopPhiStampsBooleantrue
Inject stamps on induction variables.
OptPropagateEqualityBooleantrue
Propagate equality into dominated nodes.
OptPullThroughPhiBooleantrue
OptReadEliminationBooleantrue
OptScheduleOutOfLoopsBooleantrue
OptStringConcatDumpUnhandledBooleanfalse
Dump graphs to help debug operation
OptStringConcatDumpBooleanfalse
Dump graphs to help debug operation
OptStringConcatBooleantrue
Optimize StringBuilder construction
OptWriteBarrierEliminationBooleantrue
Eliminate redundant write barriers.
OptWriteMotionBooleanfalse
Perform write sinking.
OptimisticAliasingAnalysisBooleantrue
OptimizeLoopAccessesBooleantrue
Enable access node optimizations for loops
PGOInstrumentStringnull
Dump information for Profile Guided Optimizations (true or file name)
PLABWeightInteger75
Percentage (0-100) used to weight the current sample when computing
exponentially decaying average for ResizePLAB
ParGCArrayScanChunkInteger50
Scan a subset of object array and push remainder, if array is bigger
than this
ParallelGCBufferWastePctInteger10
Wasted fraction of parallel allocation buffer
ParallelGCThreadsInteger0
Number of parallel threads parallel gc will use
ParallelRefProcBalancingEnabledBooleantrue
Enable balancing of reference processing queues
ParallelRefProcEnabledBooleantrue
Enable parallel reference processing whenever possible
PartialEscapeAnalysisBooleantrue
PartialRedundancyEliminationBooleantrue
Enable partial redundancy elimination
PartialUnrollCostReductionFactorHighTierInteger2
Cost/Benefit heuristic for EE unrolling in high tier: reduce cost by a
constant factor when comparing with relative benefit.
PartialUnrollCostReductionFactorMidTierInteger8
Cost/Benefit heuristic for EE unrolling in mid tier: reduce cost by a
constant factor when comparing with relative benefit.
PartialUnrollMaxIterationsHighTierInteger4
Maximum number of iterations to unroll for a high tier main loop.
PartialUnrollMaxIterationsMidTierInteger16
Maximum number of iterations to unroll for a mid tier main loop.
PartialUnrollMaxSizeHighTierInteger256
Maximum node cost size of a loop to be considered for high tier
unrolling.
PartialUnrollMaxSizeMidTierInteger256
Maximum node cost size of a loop to be considered for mid tier tier
unrolling.
PartialUnrollMinFrequencyInteger2
Minimal loop frequency to consider a loop for partial unrolling
PartialUnrollBooleantrue
PathProfileCutThresholdInteger10
The limit on the number of paths at control-flow merges. Decreasing
this value reduces the number of paths, but also shortens them.
PathProfileDumpFileStringnull
Dump information for path profile (null or file name). If set to null,
then dumping is disabled.
PathProfileFrequentThresholdLong500
Maximum acceptable number of paths coming from the inbound of a merge
if both of them are frequent.
PathProfileGlobalLowFrequencyRatioDouble0.1
If some block's relative frequency drops below this number times the
maximum relative frequency in the graph, then the block is considered
infrequent.
PathProfileLocalLowFrequencyRatioDouble10.0
If the ratio of the merge's frequency with its inbound's frequency is
greater than this threshold, then the inbound is considered infrequent.
PathProfileMaxTotalCountersInteger4000000
Maximum number of counters to use in path profiling for all
instrumented methods.
PathProfilePolicyStringNone
Enable or disable the path-profiling algorithm. If it enables it, it
also allows to select which mode to execute.
PathProfileRegenerateBooleanfalse
Controls whether the path-regeneration algorithm is executed.
PeelALotBooleanfalse
PeelFoldFactorInteger120
PeelInvertedLoopsToEnableProtectionBooleantrue
Try to peel inverted loops without protection to make them counted.
PeelingConsideredMinFrequencyDouble4.0
Minimal loop frequency necessary to consider peeling.
PenalizeComplexLoopControlFlowBooleantrue
Increase the cost of duplicating control flow splits inside loops if
they are not foldable.The generally tend to complicate control flow and
generate worse code in the backend.
PercentTimeInIncrementalCollectionInteger50
Percentage of total collection time that should be spent on young
generation collections.
PerfDataMemorySizeInteger32768
Size of performance data memory region. Will be rounded up to a
multiple of the native os page size.
PerfDataSamplingIntervalInteger200
Jvmstat instrumentation sampling interval (in milliseconds)
PerfMaxStringConstLengthInteger1024
Maximum PerfStringConstant string length before truncation
PhiMinificationMinimalLoopFrequencyDouble2.0
Minimal loop frequency to consider a loop for inverted phi minifaction.
PreTouchParallelChunkSizeLong1073741824
Per-thread chunk size for parallel memory pre-touch.
PreferContainerQuotaForCPUCountBooleantrue
Calculate the container CPU availability based on the value of quotas
(if set), when true. Otherwise, use the CPU shares value, provided it
is less than quota.
PrefetchCopyIntervalInBytesLong-1
How far ahead to prefetch destination area (<= 0 means off)
PrefetchScanIntervalInBytesLong-1
How far ahead to prefetch scan area (<= 0 means off)
PrintAnalysisCallTreeBooleanfalse
Print analysis call tree, a breadth-first tree reduction of the call
graph.
PrintAnalysisStatisticsBooleanfalse
Print analysis results statistics.
PrintBackendCFGBooleanfalse
Enable dumping LIR, register allocation and code generation info to the
C1Visualizer.
PrintBlockMappingBooleanfalse
Enable dumping CFG built during initial BciBlockMapping
PrintCFGBooleanfalse
Enable dumping to the C1Visualizer. Enabling this option implies
PrintBackendCFG.
PrintCanonicalGraphStringFlavorInteger0
Choose format used when dumping canonical text for graphs: 0 gives a
scheduled graph (better for spotting changes involving the schedule)
while 1 gives a CFG containing expressions rooted at fixed nodes
(better for spotting small structure differences)
PrintCanonicalGraphStringsBooleanfalse
Enable dumping canonical text from for graphs.
PrintCompilationBooleanfalse
Print an informational line to the console for each completed
compilation.
PrintConfigBooleanfalse
Prints VM configuration available via JVMCI.
PrintDetailedAllocationProfilingBooleantrue
Print detailed information for each allocation site
PrintFlagsWithExtraHelpStringnull
Print extra help, if available, based on comma-separated option names.
Pass * to show all options that contain extra help.
PrintFlagsStringnull
Show available options based on comma-separated option-types (allowed
categories: User, Expert, Debug).
PrintGCSummaryBooleanfalse
Print summary GC information after application main method returns.
PrintGCTimeStampsBooleanfalse
Print a time stamp at each collection, if +PrintGC or +VerboseGC.
PrintGCTimesBooleanfalse
Print the time for each of the phases of each collection, if
+VerboseGC.
PrintGCBooleanfalse
Print summary GC information after each collection
PrintGraphFileBooleantrue
Setting to true sets PrintGraph=file, setting to false sets
PrintGraph=network
PrintGraphHostString"127.0.0.1"
Host part of the address to which graphs are dumped.
PrintGraphPortInteger4445
Port part of the address to which graphs are dumped in binary format.
PrintGraphWithScheduleBooleanfalse
Schedule graphs as they are dumped.
PrintGraphStringFile
Where IdealGraphVisualizer graph dumps triggered by Dump or DumpOnError
should be written.
The accepted values are:
      File - Dump IGV graphs to the local file system (see DumpPath).
   Network - Dump IGV graphs to the network destination specified by PrintGraphHost and PrintGraphPort.
             If a network connection cannot be opened, dumping falls back to file dumping. 
   Disable - Do not dump IGV graphs.
PrintHeapShapeBooleanfalse
Print the shape of the heap before and after each collection, if
+VerboseGC.
PrintIRWithLIRBooleanfalse
Print HIR along side LIR as the latter is generated
PrintImageObjectTreeBooleanfalse
Print image object hierarchy.
PrintLIRWithAssemblyBooleanfalse
Include the LIR as comments with the final assembly.
PrintPointsToStatisticsBooleanfalse
Report analysis statistics.
PrintProfilingInformationBooleanfalse
Print profiling information when parsing a method's bytecode
PrintSynchronizedAnalysisBooleanfalse
Print types used for Java synchronization.
PriorityInliningPolicyString""
The policy to use, must be empty for automatic resolution.
PriorityInliningTuningPolicyString"DomainSpecific,BytecodeInterpreter"
Comma-separated list of analysis policies for exploring the methods in
the call graph and for inlining, empty for no policy.
ProbabilisticProfilingBooleantrue
Control probabilistic profiling on AMD64
ProfileAllocationsContextStringAllocatingMethod
Control the naming and granularity of the counters when using
ProfileAllocations.
The accepted values are:
        AllocatingMethod - a counter per method
         InstanceOrArray - one counter for all instance allocations and
                           one counter for all array allocations 
           AllocatedType - one counter per allocated type
  AllocatedTypesInMethod - one counter per allocated type, per method
 
ProfileAllocationsBooleanfalse
Enable profiling of allocation sites.
ProfileAnalysisOperationsBooleanfalse
Track the progress of the static analysis.
ProfileBackedgesBooleantrue
Emit profiling of backedges
ProfileCompiledMethodsBooleanfalse
ProfileConstantObjectsBooleanfalse
Track the creation of constant objects.
ProfileDumpPeriodInteger-1
Integer greater than zero representing the duration in seconds that
will be used to trigger a profile capture. Any integer less than one
disables periodic dumps
ProfileInvokesBooleantrue
Emit profiling of invokes
ProfileLockEliminationBooleanfalse
ProfileMonitorsBooleanfalse
Enable profiling of monitor operations.
ProfileOptBulkAllocationBooleanfalse
ProfileSelfTimeBooleantrue
Excludes time spent in invoked methods; measures total time including
subcalls when turned off.
ProfileSimpleMethodsBooleantrue
Profile simple methods
ProfilesDumpFileString"default.iprof"
Value should point to a profile dump file.
PropagateEqualityDepthInteger6
Maximum depth of dependency when propagating equals property.
PruneLargeDominatorUsageTreesBooleantrue
PullThroughPhiCodeSizeIncreaseDouble0.1
PullThroughPhiOptimization: Percentage in node cost graph size for the
floating node duplication budget. Computed relative to the method's
graph size.
QueuedAllocationWarningCountLong0
Number of times an allocation that queues behind a GC will retry before
printing a warning
RawConditionalEliminationBooleantrue
ReadEliminationMaxLoopVisitsInteger5
ReadProxySchedulingStrategyStringLATEST
Chose the scheduling strategy for inserting the read proxies.
ReassociateExpressionsBooleantrue
Re-associate loop invariants and constants.
ReduceDCEBooleantrue
Disable optional dead code eliminations
RefDiscoveryPolicyInteger0
Select type of reference discovery policy: reference-based(0) or
referent-based(1)
RegisterPressureStringnull
Comma separated list of registers that register allocation is limited
to.
RelativeBenefitInliningCoefficientDouble0.001
The coefficient used to compute the inlining threshold; the higher, the
hard to inline.
RelaxTypeFlowStateConstraintsBooleantrue
Allow a type flow state to contain types not compatible with its
declared type.
RemoveNeverExecutedCodeBooleantrue
RemoveSaturatedTypeFlowsBooleantrue
Enable the type flow saturation analysis performance optimization.
ReplaceInputsWithConstantsBasedOnStampsBooleantrue
ResizePLABBooleantrue
Dynamically resize (survivor space) promotion LAB's
ResizeTLABBooleantrue
Dynamically resize TLAB size for threads
RespectVectorizationBooleantrue
Try avoid unrolling vectorizable loops.
RuntimeSourceDestDirStringnull
Directory where Java source-files will be placed for the debugger
SIMDVectorizationDirectLoadStoreBooleanfalse
Allow SIMDVectorization to vectorize load to store opportunities when
there are no matching SIMD operations between lad and store
SIMDVectorizationSingletonsBooleanfalse
Enable matching of singleton groups to increase corner-case matching
SIMDVectorizationWindowSizeInteger4
Set the number of dominating and dominated blocks scanned per block
SafepointPromptnessFailureNanosLong0
Exit the VM if I can not come to a safepoint in this many nanoseconds.
0 implies forever.
SafepointPromptnessWarningNanosLong0
Print a warning if I can not come to a safepoint in this many
nanoseconds. 0 implies forever.
ScanObjectsParallelBooleantrue
Object scanning in parallel
ScheduledDuplicationSimulationBooleanfalse
Simulation can either only process fixed nodes or schedule the graph
and also process floating nodes.
ShowConfigurationStringnone
Writes to the VM log information about the compiler configuration
selected.
ShowDumpFilesBooleanfalse
Print the name of each dump file path as it's created.
ShowSubstitutionSourceInfoBooleanfalse
Controls whether the source position information of snippets and method
substitutions are exposed to HotSpot. Can be useful when profiling to
get more precise position information.
SimpleFastInflatedLockingBooleantrue
Handle simple cases for inflated monitors in the fast-path.
SimpleMethodCallsInteger1
Maximum number of calls in a simple method
SimpleMethodGraphSizeInteger256
Maximum number of nodes in a graph for a simple method
SimpleMethodIndirectCallsInteger0
Maximum number of indirect calls in a simple moethod
SimulationBasedLoopPeelingBooleantrue
Use DBDS algorithm to simulate the impact of peeling on a loop.
SimulationPruneUnlikelyBranchesBooleantrue
Ignore low frequency branches during simulation.
SmallCompiledLowLevelGraphSizeInteger330
If the previous low-level graph size of the method exceeds the
threshold, it is not inlined.
SmallRootIrPenaltyCoefficientDouble0.02
Reduces the likelihood of exploring call graphs with IR size much
larger than the root.
SnippetCountersBooleanfalse
Enable counters for various paths in snippets.
SoftRefLRUPolicyMSPerMBLong1000
Number of milliseconds per MB of free space in the heap.
SpectrePHTBarriersStringNone
Select a strategy to mitigate speculative bounds check bypass (aka
Spectre-PHT or Spectre V1).
This is an experimental option - execution of untrusted code is not supported by GraalVM CE.
The accepted values are:
                  None - No mitigations are used in JIT compiled code.
            AllTargets - Speculative execution on all conditional branch targets is
                         stopped using speculative execution barrier instructions.
          GuardTargets - Branch targets relevant to Java memory safety are instrumented
                         with barrier instructions. This option has less performance impact
                         than AllTargets. 
  NonDeoptGuardTargets - Same as GuardTargets, except that branches which deoptimize are not
                         protected since they can not be executed repeatedly and are thus less
                         likely to be successfully exploited in an attack.
          
                         
Note that all modes except "None" will also instrument branch target blocks containing UNSAFE memory accesses
with barrier instructions.
SpectrePHTIndexMaskingBooleanfalse
Mask indices to scope access to allocation size after bounds check.
SpeculativeGuardMovementBooleantrue
Move loop invariant guards (e.g., array bounds checks) out of loops.
SpeculativeStoreCheckBooleantrue
Speculates that arrays have exact type to optimize store checks
StackSizeLong0
The size of each thread stack at run-time, in bytes.
StartFlightRecordingString""
Start flight recording with options.
StressExplicitExceptionCodeBooleanfalse
Stress the code emitting explicit exception throwing code.
StressInvokeWithExceptionNodeBooleanfalse
Stress the code emitting invokes with explicit exception edges.
StressTestEarlyReadsBooleanfalse
Stress the code by emitting reads at earliest instead of latest point.
StringIndexOfLimitInteger4096
String.indexOf invocations will be evaluated at compile time if the
receiver is a constant and its length is lower than this value.
StripMineNonCountedLoopsBooleanfalse
SupportJsrBytecodesBooleantrue
SupportOSRWithLocksBooleantrue
Support OSR compilations with locks. If DeoptAfterOSR is true we can
per definition not have unbalanced enter/exits mappings. If
DeoptAfterOSR is false insert artificial monitor enters after the
OSRStart to have balanced enter/exits in the graph.
SurvivorRatioLong8
Ratio of eden/survivor space size
TLABAllocationWeightInteger35
Allocation averaging weight
TLABRefillWasteFractionLong64
Maximum TLAB waste at a refill (internal fragmentation)
TLABSizeLong0
Starting TLAB size (in bytes); zero means set ergonomically
TLABWasteIncrementLong4
Increment allowed waste at slow allocation
TLABWasteTargetPercentInteger1
Percentage of Eden that can be wasted
TargetPLABWastePctInteger10
Target wasted space in last buffer as percent of overall allocation
TargetSurvivorRatioLong50
Desired percentage of survivor space used after scavenge
TearDownFailureNanosLong0
The number of nanoseconds before tearing down an isolate gives a
failure message. 0 implies no message.
TearDownWarningNanosLong0
The number of nanoseconds before and between which tearing down an
isolate gives a warning message. 0 implies no warning.
TierABackedgeNotifyFreqLogInteger16
Backedge notification frequency
TierABackedgeProfileProbabilityLogInteger12
Backedge profile probability
TierAInvokeInlineeNotifyFreqLogInteger-1
Inlinee invocation notification frequency (-1 means count, but do not
notify)
TierAInvokeNotifyFreqLogInteger13
Invocation notification frequency
TierAInvokeProfileProbabilityLogInteger8
Invocation profile probability
TieredAOTBooleanfalse
Do profiling and callbacks to tiered runtime
TimeStampProfilingBooleanfalse
Profile method execution time.
TimeStringnull
Pattern for specifying scopes in which timing is enabled. See the Dump
option for the pattern syntax. An empty value enables all timers
unconditionally.
TimedDynamicCountersInteger-1
Turn on the benchmark counters, and displays the results every n
milliseconds
TimersStringnull
Comma separated names of timers that are enabled irrespective of the
value for Time option. An empty value enables all timers
unconditionally.
TraceAuxiliaryImageClassHistogramBooleanfalse
Enables detailed tracing of auxiliary image events.
TraceAuxiliaryImageReferenceTreeBooleanfalse
Enables detailed tracing of auxiliary image events.
TraceBytecodeParserLevelInteger0
The trace level for the bytecode parser. A value of 1 enables
instruction tracing and any greater value emits a frame state trace
just prior to each instruction trace.Instruction tracing output from
multiple compiler threads will be interleaved so use of this option
make most sense for single threaded compilation. The MethodFilter
option can be used to refine tracing to selected methods.
TraceCodeCacheBooleanfalse
Print logging information for runtime code cache modifications
TraceDeoptimizationDetailsBooleanfalse
Print verbose logging information for every deoptimization
TraceDeoptimizationBooleanfalse
Print logging information for every deoptimization
TraceEscapeAnalysisBooleanfalse
TraceExceptionHandlerStubBooleanfalse
Trace execution of stub used to handle an exception thrown by a callee.
TraceHeapChunksBooleanfalse
Trace heap chunks during collections, if +VerboseGC and
+PrintHeapShape.
TraceInlineDuringParsingBooleanfalse
Traces inlining performed during bytecode parsing.
TraceInliningForStubsAndSnippetsBooleanfalse
Enable inlining decision tracing in stubs and snippets.
TraceInliningBooleanfalse
Enable tracing of inlining decisions.
Output format:
  compilation of 'Signature of the compilation root method':
    at 'Signature of the root method' ['Bytecode index']: <'Phase'> 'Child method signature': 'Decision made about this callsite'
      at 'Signature of the child method' ['Bytecode index']: 
         |--<'Phase 1'> 'Grandchild method signature': 'First decision made about this callsite'
         \--<'Phase 2'> 'Grandchild method signature': 'Second decision made about this callsite'
      at 'Signature of the child method' ['Bytecode index']: <'Phase'> 'Another grandchild method signature': 'The only decision made about this callsite.'
TraceLIRGeneratorLevelInteger0
The trace level for the LIR generator
TraceMethodDataFilterStringnull
Enables tracing of profiling info when read by JVMCI.
Empty value: trace all methods
Non-empty value: trace methods whose fully qualified name contains the value.
TraceMonitorsMethodFilterStringnull
Trace monitor operations in methods whose fully qualified name contains
this substring.
TraceMonitorsTypeFilterStringnull
Trace monitor operations on objects whose type contains this substring.
TraceParserPluginsBooleanfalse
Traces use of plugins during bytecode parsing.
TraceUnwindStubBooleanfalse
Trace execution of the stub that routes an exception to a handler in
the calling frame.
TrackAccessChainBooleanfalse
Track the callers for methods and accessing methods for fields.
TrackGraphSizesInDuplicationBooleanfalse
Enable (if Count is enabled) graph size tracking during every
duplication iteration.
TrackInliningStatisticsStringnone
Track inlining statistics (inlining duration, call tree size, compiler
node counts, and the number of callsites). One of: none, interactive
TrackInputFlowsBooleanfalse
Track the input for type flows.
TrackMemUseStringnull
Pattern for specifying scopes in which memory use tracking is enabled.
See the Dump option for the pattern syntax. An empty value enables all
memory use trackers unconditionally.
TrackNodeInsertionBooleanfalse
Track source stack trace where a node was inserted into the graph.
TrackNodeSourcePositionBooleanfalse
Track the NodeSourcePosition.
TrivialInliningSizeInteger10
Graphs with less than this number of nodes are trivial and therefore
always inlined.
TrivialLoopSizeLimitForPeelingDouble512.0
Loop peeling will consider any loop with a size (in terms of estimated
machine instructions) below this value to be a prime candidate for
peeling. Larger loops will only be considered for peeling if the
simulated benefit of peeling is relatively high. The larger the loop,
the greater the expected benefit has to be.
TruffleCompilerConfigurationStringnull
Select a compiler configuration for Truffle compilation (default: use
Graal system compiler configuration).
TrustFinalDefaultFieldsBooleantrue
Determines whether to treat final fields with default values as
constant.
TryExplodeOverPhisBooleantrue
PullThroughPhiOptimization: Enable floating node duplication over
multiple phi nodes at once.
TryPhiPhiPullsBooleantrue
PullThroughPhiOptimization: Enable floating node duplication over phis
where the target node has different phis as input.
TuneInlinerExplorationDouble0.0
Increases or decreases the time spent exploring inlining opportunities
under the assumption that more time results in better peak performance
and less time reduces time to reach (a lower) peak performance. The
value of the option is clamped between -1 and 1 inclusive. Anything
below 0, reduces the exploration time and anything above 0 increases
exploration time. Note that this option is only a heuristic and should
be tuned for any specific application.
TypeCheckMaxHintsInteger2
The maximum number of profiled types that will be used when compiling a
profiled type check. Note that TypeCheckMinProfileHitProbability also
influences whether profiling info is used in compiled type checks.
TypeCheckMinProfileHitProbabilityDouble0.5
If the probability that a type check will hit one the profiled types
(up to TypeCheckMaxHints) is below this value, the type check will be
compiled without profiling info
TypeFlowPrinterInRadiusInteger0
How many levels of inputs to print. A value of 0 prints only the target
flow.
TypeFlowPrinterOutRadiusInteger0
How many levels of outputs to print. A value of 0 prints only the
target flow.
TypeFlowSaturationCutoffInteger20
The maximum number of types recorded in a type flow. -1 indicates no
limitation.
TypicalCallGraphSizeInteger200
Denotes the call graph size that is considered medium size.
TypicalGraphSizeInvokeBonusInteger70
The increase in estimated typical graph size after inlining, per each
extra invoke.
TypicalGraphSizeMaxInteger15000
The maximum in estimated inlined typical graph size.
TypicalGraphSizeInteger3250
The typical graph size at which inlining pressure must start growing.
UnresolvedIsErrorBooleantrue
Report unresolved elements as errors.
UnrollEmptyLoopsBooleanfalse
Unroll empty loops.
UnrollInvertedLoopsBooleantrue
Unroll inverted (tail counted) loops.
UnrollMaxIterationsInteger16
UnrollMultiEndLoopsBooleantrue
Unroll loops with multiple loop ends.
UnrollMultiExitLoopsBooleantrue
Unroll loops with multiple loop exits.
UseBranchesWithin32ByteBoundaryBooleanfalse
Force branch instructions to align with 32-bytes boundary, to mitigate
the jcc erratum. See
https://www.intel.com/content/dam/support/us/en/documents/processors/mitigations-jump-conditional-code-erratum.pdf
for more details. If not set explicitly, the default value will be
determined according to the CPU model.
UseCompilationStatisticsBooleanfalse
Enables CompilationStatistics.
UseDynamicNumberOfGCThreadsBooleantrue
Dynamically choose the number of threads up to a maximum of
ParallelGCThreads parallel collectors will use for garbage collection
work
UseEncodedGraphsBooleanfalse
Encode and decode snippets and substitutions before parsing to test
libgraal code path. This option is ignored in the context of libgraal.
UseExceptionProbabilityBooleantrue
UseGraalStubsBooleantrue
Use Graal-generated stubs for complicated LIR operations instead of
embedding all the emitted code.
UseGraphCacheBooleantrue
Turn on graph caching.
UseLoopLimitChecksBooleantrue
UsePerfDataBooleantrue
Flag to disable jvmstat instrumentation for performance testing.
UsePriorityInliningBooleantrue
Use priority-based inlining.
UseProfilingInformationBooleantrue
          
UseSnippetGraphCacheBooleantrue
Use a cache for snippet graphs.
UseSnippetTemplateCacheBooleantrue
Use a LRU cache for snippet templates.
UseTrappingNullChecksBooleantrue
Use traps for null checks instead of explicit null-checks
UseTypeCheckHintsBooleantrue
VTuneAbsoluteFilenamesBooleantrue
Use absolute path for source-filenames in VTune events.
VectorFoldMinIterationsInteger4
Only generate SIMD loops for vector folds expected to iterate at least
this many times.
VectorIntrinsicsBooleantrue
Enable vectorized array copy intrinsics
VectorUnrollInteger1
Unroll vectorized loops
VectorizationBooleantrue
Enable vectorization.
VectorizeAllocationBooleantrue
Enable vectorized array initialization
VectorizeConditionalBooleantrue
Enable vectorization of conditional code.
VectorizeDeoptsBooleantrue
Enable vectorization of loops with conditional deopts before writes.
VectorizeFoldShapedBooleantrue
Enable vectorization of loops implementing a higher-order 'fold'
function.
VectorizeGatherBooleantrue
Enable vectorization of vector gather operations.
VectorizeHashesBooleantrue
Enable vectorization of hashCode patterns.
VectorizeLoopsBooleantrue
Enable vectorization of loops
VectorizeMapShapedBooleantrue
Enable vectorization of loops implementing a higher-order 'map'
function.
VectorizeNegativeStrideBooleantrue
Enable vectorization of loops with negative strides.
VectorizeSIMDBooleanfalse
Enable detection of SIMD patterns
VectorizeSafepointsBooleantrue
Enable vectorization of loops with safepoints.
VectorizeSequenceBooleantrue
Enable vectorization of sequence values.
VerboseGCBooleanfalse
Print more information about the heap before and after each collection
VerifyAfterGCBooleanfalse
Verify memory system after GC
VerifyBalancedMonitorsBooleanfalse
Emit extra code to dynamically check monitor operations are balanced.
VerifyBeforeGCBooleanfalse
Verify memory system before GC
VerifyDuplicationOperationsBooleanfalse
VerifyDuringGCBooleanfalse
Verify memory system during GC (between phases)
VerifyGCStartAtLong0
GC invoke count where +VerifyHeap kicks in
VerifyGraalGraphEdgesBooleanfalse
Perform expensive verification of graph inputs, usages, successors and
predecessors
VerifyGraalGraphsBooleantrue
Verify graphs often during compilation when assertions are turned on
VerifyGraalPhasesSizeBooleanfalse
Verify before - after relation of the relative, computed, code size of
a graph
VerifyHeapAtReturnBooleanfalse
Perform platform dependent validation of the Java heap at returns
VerifyKillCFGUnusedNodesBooleanfalse
Verify that there are no new unused nodes when performing killCFG
VerifyLoopVectorizationBooleanfalse
Run expensive checks to verify the graph after loop vectorization.
VerifyPhasesBooleanfalse
VerifyRememberedSetsBooleanfalse
Verify GC remembered sets
VerifyWriteBarrierEliminationBooleanfalse
Add code to verify that eliminated barriers weren't needed.
VerifyStringnull
Pattern for specifying scopes in which logging is enabled. See the Dump
option for the pattern syntax.
WriteableCodeCacheBooleanfalse
Allocate code cache with write access, allowing inlining of objects
YoungPLABSizeLong4096
Size of young gen promotion LAB's (in HeapWords)
ZapStackOnMethodEntryBooleanfalse
ZeroTLABBooleanfalse
Zero out the newly created TLAB