VM Options Explorer - GraalVM native-image JDK21


NameTypeDefaultAvailabilityDescription
TypeAvailability
AOTInlinebooltrueHosted
Deprecated.
AOTPriorityInlinebooltrueHosted
Enable use of priority inlining during AOT compilation.
AOTTrivialInlinebooltrueHosted
Perform trivial method inlining in the AOT compiled native image.
APIFunctionPrefixString"graal_"Hosted
Prefix that is added to the names of API functions. 
AbortOnBenchmarkCounterOverflowboolfalseRuntime
Abort VM with SIGILL if benchmark counters controlled by the (Generic|Timed|Benchmark)DynamicCounters.
AbortOnFieldReachableString*Hosted
Print a trace and abort the build process if any field matching the specified pattern becomes reachable. 
AbortOnMethodReachableString*Hosted
Print a trace and abort the build process if any method matching the specified pattern becomes reachable. 
AbortOnTypeReachableString*Hosted
Print a trace and abort the build process if any type matching the specified pattern becomes reachable. 
ActiveProcessorCountint-1Runtime
Overwrites the available number of processors provided by the OS. Any value <= 0 means using the processor count from 
the OS.
AddAllCharsetsboolfalseHosted
Make all hosted charsets available at run time.
AddAllFileSystemProvidersbooltrueHosted
Make all supported providers returned by FileSystemProvider.installedProviders() available at run time.
AddExportsString*Hosted
Value /=(,)* updates  to export  to , 
regardless of module declaration.  can be ALL-UNNAMED to export to all unnamed modules.
AddOpensString*Hosted
Value /=(,)* updates  to open  to , 
regardless of module declaration.
AddReadsString*Hosted
Value =(,)* updates  to read , regardless of module 
declaration.  can be ALL-UNNAMED to read all unnamed modules.
AdditionalSecurityProvidersString*Hosted
Comma-separated list of additional security provider fully qualified class names to mark as used.Note that this option 
is only necessary if you use custom engine classes not available in JCA that are not JCA compliant.
AdditionalSecurityServiceTypesString*Hosted
Comma-separated list of additional security service types (fully qualified class names) for automatic registration. Note 
that these must be JCA compliant.
AdoptedPGOEnabledString*Hosted
A comma-separated list of file paths containing the adopted profiles. We profile frequently used code (e.g., the Java 
standard library), and cache collected profiles. Adopted profiles then enable the PGO without the profiling. .
AggregatedMetricsFileStringNoneRuntime
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.
AliasArrayTypeFlowsbooltrueRuntime
Model all array type flows using a unique elements type flow abstraction.
AlignedHeapChunkSizeint524288Hosted
The size of an aligned chunk. Serial and epsilon GC only. 
AllocateInstancePrefetchLinesint1Hosted
Number of cache lines to load after the object address using prefetch instructions. 
AllocatePrefetchDistanceint192Hosted
Sets the size (in bytes) of the prefetch distance for object allocation. Memory about to be written with the value of 
new objects is prefetched up to this distance starting from the address of the last allocated object. Each Java thread
has its own allocation point.
AllocatePrefetchInstrint0Hosted
Sets the prefetch instruction to prefetch ahead of the allocation pointer. Possible values are from 0 to 3. The actual 
instructions behind the values depend on the platform.
AllocatePrefetchLinesint4Hosted
Number of cache lines to load after the array allocation using prefetch instructions. 
AllocatePrefetchStepSizeint64Hosted
Sets the step size (in bytes) for sequential prefetch instructions. 
AllocatePrefetchStyleint1Hosted
Generated code style for prefetch instructions: for 0 or less no prefetch instructions are generated and for 1 or more 
prefetch instructions are introduced after each allocation.
AllocationProfilingThresholdint1048576Runtime
The minimum size in bytes required for printing an allocation profiling entry. 
AllocationProfilingboolfalseHosted
Enable runtime profiling of allocation.
AllocationSiteSensitiveHeapboolfalseRuntime
A context sensitive heap means that each heap allocated object is modeled by using at least the allocation site.
AllowDeprecatedAutomaticFeaturebooltrueHosted
Allow using deprecated @AutomaticFeature annotation. If set to false, an error is shown instead of a warning.
AllowDeprecatedBuilderClassesOnImageClasspathboolfalseHosted
Instead of abort, only warn if image builder classes are found on the image class-path.
AllowDeprecatedInitializeAllClassesAtBuildTimeboolfalseHosted
Instead of abort, only warn if --initialize-at-build-time= is used.
AllowFoldMethodsboolfalseHosted
Allow MethodTypeFlow to see @Fold methods.
AllowIncompleteClasspathboolfalseHosted
Deprecated.
AllowJRTFileSystemboolfalseHosted
Enable support for reading Java modules (jimage format) and the jrt:// file system. Requires java.home to be set at 
runtime.
AllowVMInspectionboolfalseHosted
Enables features that allow the VM to be inspected during run time.
AllowVMInternalThreadsbooltrueHosted
Determines if VM internal threads (e.g., a dedicated VM operation or reference handling thread) are allowed in this 
image.
AlwaysInlineIntrinsicsboolfalseRuntime
Unconditionally inline intrinsics.
AlwaysInlineVTableStubsboolfalseRuntime
AlwaysPreTouchboolfalseRuntime
Force all freshly committed pages to be pre-touched. G1 GC only.
AnalysisContextSensitivityString"insens"Runtime
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).
AnalysisSizeCutoffint8Runtime
The maximum size of type and method profiles returned by the static analysis. -1 indicates no limitation. 
ArrayRegionEqualsConstantLimitint4096Runtime
Array region equality checks will be evaluated at compile time if the receiver is a constant and its length is smaller 
than this value.
AssertInitializationSpecifiedForAllClassesboolfalseHosted
Assert class initialization is specified for all classes.
AutomaticReferenceHandlingbooltrueRuntime
Determines if the reference handling is executed automatically or manually.
BaseTargetSpendingint120Runtime
The base target spending used to estimate the inlining threshold; the higher, the likelier it is to inline. 
BenchmarkCounterPrintingCutoffbooltrueRuntime
Use a cutoff to print only most significant counters.
BenchmarkCountersDumpDynamicbooltrueRuntime
Dump dynamic counters.
BenchmarkCountersDumpStaticboolfalseRuntime
Dump static counters.
BenchmarkCountersFileStringNoneRuntime
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.
BenchmarkDynamicCountersStringNone [Extra help available]Runtime
Turn on the benchmark counters. The format of this option is:.
BlindConstantsboolfalseRuntime
Blind constants in code with a random key.
BootstrapInitializeOnlyboolfalseRuntime
Do not compile anything on bootstrap but just initialize the compiler.
BootstrapTimeoutdouble15.0Runtime
Maximum time in minutes to spend bootstrapping (0 to disable this limit). 
BootstrapWatchDogCriticalRateRatiodouble0.25Runtime
Ratio of the maximum compilation rate below which the bootstrap compilation rate must not fall (0 or less disables 
monitoring).
BouncyCastleIntrinsicsbooltrueRuntime
Enable native intrinsics for BouncyCastle.
BreakChainedPhisbooltrueRuntime
Break chained phis.
BuildOutputBreakdownsbooltrueHosted
Show code and heap breakdowns as part of the build output.
BuildOutputColorfulboolfalseHosted
Color build output (enabled by default if colors are supported by terminal).
BuildOutputGCWarningsbooltrueHosted
Print GC warnings as part of build output.
BuildOutputJSONFileString*Hosted
Print build output statistics as JSON to the specified file. The output conforms to the JSON schema located at: 
docs/reference-manual/native-image/assets/build-output-schema-v0.9.2.json.
BuildOutputLinksboolfalseHosted
Show links in build output (defaults to the value of BuildOutputColorful).
BuildOutputPrefixboolfalseHosted
Prefix build output with ':'.
BuildOutputProgressboolfalseHosted
Report progress in build output (default is adaptive).
BuildOutputRecommendationsbooltrueHosted
Show recommendations as part of the build output.
BuildOutputSilentboolfalseHosted
Silence build output.
BuildReportSamplerFlamegraphboolfalseHosted
Add sampler output in form of a flame graph to Native Image Build Report.
BuildReportboolfalseHosted
Create a Native Image Build Report.
CAIAggregateProfilesboolfalseHosted
Use a different policy for approximating the incomplete profiling information.
CAIAggressiveColdCodeOptimizationsboolfalseHosted
Determine if the optimizer should run aggressive optimizations on cold code (rarely executed code during the PGO run).
CAIAggressivelyOptimizeHotbooltrueRuntime
Perform more aggressive optimization on compilation units deemed to be hot.
CAIApplyProfilesWhileExpandingbooltrueRuntime
Apply sampling based profiles to candidates for inlining before doing the inlining.
CAIColdCodeMaxInvocationsint3Hosted
Maximum number of invocations of a non-sampled method beyond which that method will be considered cold. Will result in 
less optimizations performed on such compilation units.
CAIHotBonusWhileExpandingint50Runtime
Apply a bonus to the priority of hot cutoff nodes during exploration. Set to 0 to disable. 
CAIHotContextsRatiodouble0.05Hosted
The minimal percentage of the total time that has to be spent in a method invoked from a calling-context to consider 
them as hot.
CAIPrintCalleesboolfalseHosted
Whether to print the hot compilation units.
CAIPrintPrefixTreePathString"prefixTree.txt"Hosted
Path to print the prefix tree (default: prefixTree.txt). 
CAIPrintPrefixTreeboolfalseHosted
Print the prefix tree in flame graph friendly format to the path specified by CAIPrintPrefixTreePath.
CAPCacheDir""Hosted
Directory where information generated by the CAnnotation Processor are cached. 
CCompilerOptionString*Hosted
Provide custom C compiler option used for query code compilation. 
CCompilerPathStringNoneHosted
Provide custom path to C compiler used for query code compilation and linking.
CLibraryPathString*Hosted
Search path for C libraries passed to the linker (list of comma-separated directories). 
CPUFeaturesString*Hosted
Comma separated list of CPU features that will be enabled while building the target executable, irrespective of whether 
they are supported by the hosted environment. Note that enabling features not present within the target environment may
result in application crashes. The specific options available are target platform dependent. See --list-cpu-features
for feature list. These features are in addition to -march.
CStandardString"C89"Hosted
C standard to use in header files. Possible values are 'C89', 'C99', and 'C11'. 
CallGraphCompilerNodeLimitint35000Runtime
Controls the maximum number of compiler nodes that can appear in the call graph. 
CallGraphSizeLimitint1200Runtime
Controls the maximum size of the call graph before ceasing inlining. 
CallGraphSizePenaltyCoefficientdouble0.01Runtime
Reduces the likelihood of exploring call graph subtrees that are large. 
CanonicalGraphStringsCheckConstantsboolfalseRuntime
Exclude virtual nodes when dumping canonical text for graphs.
CanonicalGraphStringsExcludeVirtualsbooltrueRuntime
Exclude virtual nodes when dumping canonical text for graphs.
CanonicalGraphStringsRemoveIdentitiesbooltrueRuntime
Attempts to remove object identity hashes when dumping canonical text for graphs.
CheckBootModuleDependenciesint1Hosted
Temporary option to disable checking of image builder module dependencies or increasing its verbosity. 
CheckIsolateThreadAtEntryboolfalseHosted
At CEntryPoints check that the passed IsolateThread is valid.
CheckRecurringCallbackOnNativeToJavaTransitionboolfalseHosted
Test whether a thread's recurring callback is pending on each transition from native code to Java.
CheckToolchainbooltrueHosted
Check if native-toolchain is known to work with native-image.
ClampMLInferredProfilesbooltrueHosted
Clamp the ML-inferred profiles.
ClassInitializationString*Hosted
A comma-separated list of classes appended with their initialization strategy (':build_time', ':rerun', or ':run_time'). 
Class""Hosted
Class containing the default entry point method. Optional if --shared is used. 
ClearMetricsAfterBootstrapboolfalseRuntime
Clear the debug metrics after bootstrap.
CodeAlignmentint16Hosted
Alignment of AOT and JIT compiled code in bytes. 
CodeCacheCountersboolfalseHosted
Count accesses to the image and runtime code info table.
CodeInfoEncoderCountersboolfalseHosted
Statistics about code and deoptimization information.
CodeInfoIndexGranularityint256Hosted
The granularity of the index for looking up code metadata. Should be a power of 2. Larger values make the index smaller, 
but access slower.
CodeSectionLayoutOptimizationClosestIsBestGraphSizeint4000Hosted
When code-section layout optimization is on, specify size of the graph used for closest-is-best algorithm.
CodeSectionLayoutOptimizationSizeLimitbooltrueHosted
When code-section layout optimization is on, define if a size limit within closest-is-best algorithm is used.
CodeSectionLayoutOptimizationStringNoneHosted
Enable code-section layout optimization when writing the native image (optimization valid only with --pgo).
CollectImageBuildStatisticsboolfalseRuntime
Collect information during image build about devirtualized invokes and bytecode exceptions.
CollectYoungGenerationSeparatelyboolfalseRuntime
Determines if a full GC collects the young generation separately or together with the old generation. Serial GC only. 
ColorString"auto"Hosted
Color build output ('always', 'never', or 'auto'). 
CompilationBailoutAsFailureboolfalseRuntime
Treat compilation bailouts like compilation failures.
CompilationCountLimitint0Runtime
The number of compilations allowed for any method before the VM exits (a value of 0 means there is no limit). 
CompilationExcludePhasesStringNoneRuntime
Exclude certain phases from compilation, either unconditionally or with a method filter. Multiple exclusions can be 
specified separated by ':'. Phase names are matched as substrings, e.g.:
CompilationExcludePhases=PartialEscape:Loop=A.*,B.foo excludes PartialEscapePhase from all compilations and any phase
containing 'Loop' in its name from compilations of all methods in class A and of method B.foo.
CompilationExpirationPerioddouble300.0Runtime
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.
CompilationFailureActionStringSilentRuntime
Specifies the action to take when compilation fails. [Extra help available] 
CompilationIsolateAddressSpaceSizeint0Runtime
Size of the reserved address space of each compilation isolate (0: default for new isolates). 
CompilationWatchDogStartDelayint0Runtime
Delay in seconds before watch dog monitors a compilation (0 disables monitoring). 
CompilationWatchDogVMExitDelayint0Runtime
Number of seconds after which a compilation appearing to make no progress causes the VM to exit (0 disables VM exiting). 
CompileGraalWithC1OnlybooltrueRuntime
In tiered mode compile Graal and JVMCI using optimized first tier code.
CompileInIsolatesbooltrueRuntime
Activate runtime compilation in separate isolates (enable support during image build with option 
SupportCompileInIsolates).
CompileInPerThreadReusedIsolatesbooltrueRuntime
Create one reusable isolate per compilation thread as opposed to one isolate per compilation (enable through 
CompileInIsolates).
CompilerBackendString"lir"Hosted
Backend used by the compiler. 
CompilerConfigurationStringNoneRuntime
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.006Runtime
Controls the likelihood of exploring subtrees that already have a lot of code during inlining. 
ConcGCThreadsint0Runtime
Number of concurrent GC threads G1 will use. 
ConditionalEliminationBeforeAnalysisbooltrueRuntime
Run conditional elimination before static analysis.
ConditionalEliminationMaxIterationsint4Runtime
ConditionalEliminationbooltrueRuntime
ConfigurationFileDirectoriesString*Hosted
Directories directly containing configuration files for dynamic features at runtime. 
ConfigurationResourceRootsString*Hosted
Resource path above configuration resources for dynamic features at runtime. 
ConfigureReflectionMetadatabooltrueHosted
Enable runtime instantiation of reflection objects for non-invoked methods.
ConsiderVectorizableLoopsbooltrueRuntime
Consider the vectorizability of loop during the duplication of a merge inside a loop.There are rare cases where 
duplication can destroy vectorization.
ContendedPaddingWidthint128Hosted
How many bytes to pad fields and classes marked @Contended with. 
ContextAwareInliningboolfalseHosted
Use PGO sampling data to do context aware inlining.
CopyPrimitiveElementArraysboolfalseHosted
Return copies of primitive element arrays when referencing them from native code.
CostNewLiveVariableint4Runtime
PullThroughPhiOptimization: Abstract cost for the creation of a new live value: new values can have a negativeimpact on 
register allocation, therefore we penalize it.
CostReductionFactorHotCodedouble128.0Runtime
See CostReductionFactor. 
CostReductionFactordouble32.0Runtime
PullThroughPhiOptimization: Cost/Benefit heuristic for EE floating node duplication: reduce cost by a constant factor 
when comparing with relative benefit.
CountWriteBarriersboolfalseHosted
Instrument write barriers with counters. Serial GC only.
CountStringNoneRuntime
Pattern for specifying scopes in which counters are enabled. See the Dump option for the pattern syntax. An empty value 
enables all counters unconditionally.
CountedStripMiningBudgetHotCodedouble2.5Runtime
See CountedStripMiningBudget. 
CountedStripMiningBudgetdouble0.1Runtime
Code size budget of the strip mining transformation in terms of NodeCostSize. 
CountedStripMiningInnerLoopTripsint4096Runtime
The max number of iterations the counted inner loop takes. 
CountedStripMiningLogCountersboolfalseRuntime
Print counter phi values on each outer and inner loop iteration.
CountedStripMiningMinFrequencyint4Runtime
Minimal frequency to consider a loop for strip mining. 
CountedStripMiningNodeSizeSmallGraphsint2000Runtime
Code size in NodeSize defining when code size heuristics starts capping strip mining.
CountersStringNoneRuntime
Comma separated names of counters that are enabled irrespective of the value for Count option. An empty value enables 
all counters unconditionally.
CrashAtStringNoneRuntime
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.
CreateJvmShimboolfalseHosted
Create a `jvm` shim for native libraries that link against that library.
CutoffCodeSizePenaltyCoefficientString1.0E-5Runtime
Controls the likelihood of further exploring subtrees with a lot of code during inlining. 
DashboardAllboolfalseHosted
In the dashboard dump, include all available information about the native image (this takes precedence over more 
specific flags).
DashboardBgvbooltrueHosted
Set dashboard to use BGV format for dump.
DashboardCodeboolfalseHosted
In the dashboard dump, include the breakdown of the code size across different packages.
DashboardDumpStringNoneHosted
Enable dashboard dumps to the specified file.
DashboardHeapboolfalseHosted
In the dashboard dump, include the breakdown of the object sizes in the heap across different classes.
DashboardJsonboolfalseHosted
Set dashboard to use JSON format for dump.
DashboardPointsToboolfalseHosted
In the dashboard dump, include the information about the points-to analysis.
DashboardPrettyboolfalseHosted
Set dashboard to use pretty print in JSON format.
DeadlockWatchdogExitOnTimeoutbooltrueHosted
Exit the image builder VM after printing call stacks.
DeadlockWatchdogIntervalint10Hosted
The interval in minutes between watchdog checks (0 disables the watchdog). 
DebugCodeInfoMaxDepthint2147483647Hosted
Specify maximum inlining depth to consider when building DebugCodeInfo. 
DebugCodeInfoUseSourceMappingsboolfalseHosted
Do not use SourceMappings for generating DebugCodeInfo (i.e. only use Infopoints).
DebugInfoSourceCacheRootString"sources"Hosted
Directory under which to create source file cache for Application or GraalVM classes. 
DebugInfoSourceSearchPathString*Hosted
Search path for source files for application or GraalVM classes (list of comma-separated directories or jar files). 
DebugPeelingSynonymsboolfalseRuntime
Debug simulation synonyms during simulation-based loop peeling.
DebugStubsAndSnippetsboolfalseRuntime
Enable debug output for stub code generation and snippet preparation.
DefaultCharsetString"UTF-8"Hosted
Default charset of the image, by the default it is the same as the default charset of the image builder. 
DefaultLocaleString"en-GB"Hosted
Default locale of the image, by the default it is the same as the default locale of the image builder. 
DefaultLoopFrequencydouble100.0Runtime
Default frequency for loops with unknown local frequency. 
DefaultUnswitchFactordouble0.7Runtime
Default unswitching factor for control split node with unkown profile data. 
DeleteLocalSymbolsbooltrueHosted
Use linker option to remove all local symbols from image.
DeoptALotboolfalseRuntime
DeoptAfterOSRbooltrueRuntime
Deoptimize OSR compiled code when the OSR entry loop is finished if there is no mature profile available for the rest of 
the method.
DeoptimizeAllboolfalseHosted
Compiles all methods as deoptimization targets for testing.
DeoptsToDisableOptimisticOptimizationint40Runtime
DetailedAssertsboolfalseRuntime
Enable expensive assertions if normal assertions (i.e. -ea or -esa) are enabled.
DetectInvertedLoopsAsCountedbooltrueRuntime
DetectUserDirectoriesInImageHeapboolfalseHosted
When set to true, the image generator verifies that the image heap does not contain a home directory as a substring.
DevirtualizeHotCalleesbooltrueRuntime
Devirtualizes callees that are hot.
DiagnoseDumpLevelint3Runtime
Specify the dump level if CompilationFailureAction#Diagnose is used.See CompilationFailureAction for details. 
file:doc-files/CompilationFailureActionHelp.txt.
DiagnosticBufferSizeint30Hosted
Specifies the number of entries that diagnostic buffers have. 
DiagnosticDetails""Runtime
Specifies how many details are printed for certain diagnostic thunks, e.g.: 'DumpThreads:1,DumpRegisters:2'. A value of 
1 will result in the maximum amount of information, higher values will print less information. By default, the most
detailed output is enabled for all diagnostic thunks. Wildcards (*) are supported in the name of the diagnostic thunk.
DiagnosticsDirString*Hosted
Sets the dir where diagnostic information is dumped. 
DiagnosticsModeboolfalseHosted
Enables the diagnostic mode.
DisableExplicitGCboolfalseRuntime
Ignore calls to System.gc().
DisableInterceptboolfalseRuntime
Disable intercepting exceptions in debug scopes.
DisableIntrinsicsStringNoneRuntime
Disable intrinsics matching the given method filter (see MethodFilter option for details). For example, 
'DisableIntrinsics=String.equals' disables intrinsics for any method named 'equals' in a class whose simple name is
'String'. You can append ':verbose' at the end of the filter value to print out disabled intrinsics as they are
encountered during compilation (e.g., 'String.equals:verbose').
DisableTypeIdResultVerificationbooltrueHosted
For internal purposes only. Disables type id result verification even when running with assertions enabled.
DisableURLProtocolsString*Hosted
List of comma separated URL protocols that must never be included. 
DominatorUsageTreeMaxDepthint16Runtime
DumpAfterEveryBCIboolfalseRuntime
Dump the current graph after every bci to IGV.
DumpDetailedNodeTypeStatsboolfalseRuntime
Gather statistics on local variables and their lifetimes relative to FrameStates.
DumpEndVersusExitLoopFrequenciesboolfalseRuntime
Debug flag to dump loop frequency differences computed based on loop end or exit nodes.If the frequencies diverge a lot, 
this may indicate missing profiles on control flowinside the loop body.
DumpFoldedReflectionElementsboolfalseHosted
Dump folded reflection elements.
DumpHeapAndExitboolfalseRuntime
Create a heap dump and exit.
DumpHeapString*Hosted
Dump the heap at a specific time during image building.The option accepts a list of comma separated phases, any of: 
during-analysis, after-analysis, before-compilation.
DumpMethodsDataboolfalseRuntime
Dump a JSON array containing all methods included in the image and exit.
DumpOnErrorboolfalseRuntime
Send compiler IR to dump handlers on error.
DumpOnPhaseChangeStringNoneRuntime
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.
DumpOutlinedSBGraphsboolfalseHosted
Dump all graphs for outlined String, StringBuilder, and StringBuffer aggregations.
DumpPathString"graal_dumps"Runtime
The directory where various Graal dump files are written. 
DumpRuntimeCompilationOnSignalboolfalseHosted
Dumps all runtime compiled methods on SIGUSR2.
DumpTargetInfoboolfalseHosted
Show native-toolchain information and image-build settings.
DumpThreadStacksOnSignalboolfalseHosted
Dumps all thread stacktraces on SIGQUIT/SIGBREAK.
DumpStringNone [Extra help available]Runtime
Filter pattern for specifying scopes in which dumping is enabled.
DumpingErrorsAreFatalboolfalseRuntime
Treat any exceptions during dumping as fatal.
DuplicateALotboolfalseRuntime
Perform Duplications as long as there is any sane improvement.
DuplicationBudgetFactorHotCodedouble2.5Runtime
See DuplicationBudgetFactor. 
DuplicationBudgetFactorLatedouble0.5Runtime
Percentage in node cost graph size for the late duplication budget. Computed relative to the methods code size. 
DuplicationBudgetFactordouble0.25Runtime
Percentage in node cost graph size for the duplication budget. Computed relative to the methods code size. 
DuplicationCostReductionFactorHotCodeint256Runtime
See DuplicationCostReductionFactor. 
DuplicationCostReductionFactorint64Runtime
Cost/Benefit heuristic for EE simulation-based code duplication: reduce cost by a constant factor when comparing with 
relative benefit.
DuplicationMinBranchFrequencydouble0.66Runtime
Ignore low frequency branches during duplication. 
DynamicCountersPrintGroupSeparatorbooltrueRuntime
Use grouping separators for number printing.
DynamicProxyConfigurationFilesString*Hosted
One or several (comma-separated) paths to JSON files that specify lists of interfaces that define Java proxy classes. 
[Extra help available]
DynamicProxyConfigurationResourcesString*Hosted
Resources describing program elements to be made available for reflection (see ProxyConfigurationFiles).
DynamicProxyTracingboolfalseHosted
Enable trace logging for dynamic proxy.
EEPeelAlotboolfalseRuntime
EagerSnippetsboolfalseRuntime
Eagerly construct extra snippet info.
EarlyCodeEmissionOrderboolfalseRuntime
Enable early code emission order computation instead of late code emission order computation.
EarlyExpandCheckCastbooltrueRuntime
Try to improve code generation by making checkcast operations better optimizable early in the compilation pipeline.
EarlyGVNbooltrueRuntime
Perform early global value numbering.
EarlyLICMbooltrueRuntime
Perform early loop invariant code motion.
EmitStringSubstitutionsbooltrueRuntime
Emit substitutions for String methods.
EnableAllSecurityServicesboolfalseHosted
Add all security service classes to the generated image.
EnableCFIboolfalseHosted
Enforce backward-edge control-flow integrity (CFI) within the native executable using pointer authentication codes (PAC) 
(aarch64 only).
EnableLoggingFeaturebooltrueHosted
Enable the feature that provides support for logging.
EnableMonitoringFeaturesString*Hosted
Enable monitoring features that allow the VM to be inspected at run time. Comma-separated list can contain 'heapdump', 
'jfr', 'jvmstat', 'jmxserver' (experimental), 'jmxclient' (experimental), or 'all' (deprecated behavior: defaults to
'all' if no argument is provided). For example: '--enable-monitoring=heapdump,jfr'.
EnablePLTGOTboolfalseHosted
Enables support for dynamic method address resolution. Should never be enabled directly.
EnableSecurityServicesFeaturebooltrueHosted
Enable automatic registration of security services.
EnableSignalHandlingbooltrueRuntime
Enables signal handling. 
EnableURLProtocolsString*Hosted
List of comma separated URL protocols to enable. 
EnableWildcardExpansionbooltrueHosted
Enable wildcard expansion in command line arguments on Windows.
EnforceMaxRuntimeCompileMethodsboolfalseHosted
Enforce checking of maximum number of methods allowed for runtime compilation. Useful for checking in the gate that the 
number of methods does not go up without a good reason.
EnterpriseCloneReadEliminationbooltrueRuntime
Try to eliminate array clone operations by handling clone operations in early read elimination.
EnterpriseEAIterationsint3Runtime
Enterprise PEA Iterations. 
EnterpriseEarlyGVNbooltrueRuntime
Perform an extended version of early global value numbering on a graph.Considers only graphs without floating guards.
EnterpriseEarlyInversionGVNbooltrueRuntime
Enterprise Loop Inversion for GVN.
EnterpriseEarlyReadEliminationbooltrueRuntime
Run more read eliminations early in the compilation pipeline.
EnterpriseExactIVOptbooltrueRuntime
Try to improve counted loop detection by specially handling math exact operations with code duplication.
EnterprisePartialUnrollbooltrueRuntime
Enable EE version of partial loop unrolling that considers more loop shapes for unrolling.
EnterpriseRCELogRangeCheckValuesboolfalseRuntime
Log all range check sub values to stdout.
EnterpriseRangeCheckEliminationbooltrueRuntime
Perform range check elimination for java long type range checks.
EntryPointNamePrefix""Hosted
Prefix that is added to the names of entry point methods. 
ErgoHeapSizeLimitint0Runtime
Maximum ergonomically set heap size (in bytes); zero means use MaxRAM * MaxRAMPercentage / 100. G1 GC only. 
ErrorFileString"svm_err_b_%t_pid%p.md"Hosted
If an error occurs, save a build error report to this file [default: svm_err_b_%t_pid%p.md] (%p replaced with pid, %t 
with timestamp).).
EscapeAnalysisBeforeAnalysisbooltrueRuntime
Run partial escape analysis on compiler graphs before static analysis.
EscapeAnalysisIterationsint2Runtime
EscapeAnalysisLoopCutoffint20Runtime
EscapeAnalyzeOnlyStringNoneRuntime
ExactFullUnrollMaxNodesint800Runtime
ExactPartialUnrollMaxNodesint200Runtime
ExcludeFunctionFromDuplicationStringNoneRuntime
Exclude compilations that MethodFilter.match this string from the duplication optimization.
ExcludeResourcesString*Hosted
Regexp to match names of resources to be excluded from the image. 
ExhaustiveHeapScanboolfalseRuntime
Scan all objects reachable from roots for analysis. By default false.
ExitAfterAnalysisboolfalseHosted
Exit after analysis.
ExitAfterCAPCacheboolfalseHosted
Exit image generation after C Annotation Processor Cache creation.
ExitAfterQueryCodeGenerationboolfalseHosted
Output query code for target platform without executing it.
ExitAfterRelocatableImageWriteboolfalseHosted
Exit after writing relocatable file.
ExitOnOutOfMemoryErrorboolfalseRuntime
Exit on the first occurrence of an out-of-memory error that is thrown because the Java heap is out of memory.
ExpandAllProximityBonusInertiadouble2.0Runtime
The inertia at which the expand-all proximity bonus decreases with the number of yet unexpanded nodes. 
ExpandAllProximityBonusdouble6.0Runtime
The decrease in call graph expansion pressure when there are few call nodes left to explore. 
ExpansionInertiaBaseValueint550Runtime
The slowness at which the expansion pressure grows with code size; the higher it is, the slower the pressure growth. 
ExpansionInertiaInvokeBonusint14Runtime
The extra slowness at which the expansion pressure grows with the code size, for each extra invoke node. 
ExpansionInertiaMaxint2000Runtime
The max slowness at which the expansion pressure grows with the code size. 
ExpectedEdenSizeint33554432Runtime
Soft upper limit for used eden size. The hinted GC will be performed if the used eden size exceeds this value. 
ExplicitGCInvokesConcurrentboolfalseRuntime
A System.gc() request invokes a concurrent collection. G1 GC only.
ExtendedAssertsboolfalseRuntime
Enable extended asserts which slow down analysis.
FailedLoopExplosionIsFatalboolfalseRuntime
Do not bail out but throw an exception on failed loop explosion.
FallbackExecutorClasspathStringNoneHosted
Internal option used to specify Classpath for FallbackExecutor.
FallbackExecutorJavaArgString*Hosted
Internal option used to specify java arguments for FallbackExecutor. 
FallbackExecutorMainClassStringNoneHosted
Internal option used to specify MainClass for FallbackExecutor.
FallbackExecutorRuntimeJavaArgString*Runtime
Internal option used to specify runtime java arguments for FallbackExecutor. 
FallbackExecutorSystemPropertyString*Hosted
Internal option used to specify system properties for FallbackExecutor. 
FallbackThresholdint5Hosted
Define when fallback-image generation should be used. 
FeaturesString*Hosted
A comma-separated list of fully qualified Feature implementation classes. 
FlightRecorderLoggingString"all=warning"Runtime
Usage: -XX:FlightRecorderLogging=[tag1[+tag2...][*][=level][,...]]. [Extra help available] 
FlightRecorderboolfalseRuntime
Enable Java Flight Recorder.
FloatingDivNodesbooltrueRuntime
Try to float non-constant division operations to expose global value numbering of divisions.
FoldSecurityManagerGetterbooltrueHosted
Fold SecurityManager getter.
ForceAdversarialLayoutboolfalseRuntime
Place N-byte constants in the data section such that they are misaligned with respect to N*2. For example, place 4 byte 
constants at offset 4, 12 or 20, etc. This layout is used to detect instructions that load constants with alignment
smaller than the fetch size. For instance, an XORPS instruction that does a 16-byte fetch of a 4-byte float not aligned
to 16 bytes will cause a segfault.
ForceDumpGraphsBeforeCompilationboolfalseRuntime
Force-dump graphs before compilation.
ForceExplicitReachabilityFenceboolfalseRuntime
Force an explicit compiler node for Reference.reachabilityFence, instead of relying on FrameState liveness.
ForceGuardHoistingLoopDuplicationWithoutPGOboolfalseRuntime
Consider methods for guard hoisting loop duplication even if not using PGO.
ForceNoROSectionRelocationsboolfalseHosted
Use only a writable native image heap (requires ld.gold linker).
ForceUnrollboolfalseRuntime
Force partial unrolling of loops if at all possible.
ForeignConfigurationFilesString*Hosted
Files describing stubs allowing foreign calls. 
ForeignResourcesString*Hosted
Resources describing stubs allowing foreign calls. 
FrameStateLivenessStatisticsboolfalseRuntime
Gather statistics on local variables and their lifetimes relative to FrameStates.
FullUnrollAsPEACleanupbooltrueRuntime
Perform full unrolling as a Partial Escape Analysis Cleanup.
FullUnrollCodeSizeBudgetFactorForLargeGraphsdouble2.0Runtime
Maximum factor by which full unrolling can increase code size for large graphs. The FullUnrollSmallGraphThreshold option
determines which graphs are small.
FullUnrollCodeSizeBudgetFactorForSmallGraphsdouble10.0Runtime
Maximum factor by which full unrolling can increase code size for small graphs. The FullUnrollSmallGraphThreshold option
determines which graphs are small.
FullUnrollConstantCompareBoostint15Runtime
FullUnrollMaxApplicationint60Runtime
FullUnrollMaxIterationsint600Runtime
FullUnrollMaxNodesint700Runtime
FullUnrollSmallGraphThresholdint1000Runtime
The threshold in terms of NodeSize for a graph to be considered small for the purpose of full unrolling. Applied in 
conjunction with the FullUnrollCodeSizeBudgetFactorForSmallGraphs and FullUnrollCodeSizeBudgetFactorForLargeGraphs
options.
FullUnrollbooltrueRuntime
G1ConcMarkStepDurationMillisdouble10.0Runtime
Target duration of individual concurrent marking steps in milliseconds. 
G1ConcRefinementThreadsint0Runtime
The number of parallel remembered set update threads. Will be set ergonomically by default. 
G1ConfidencePercentint50Runtime
Confidence level for MMU/pause predictions. 
G1DebugLevelString"product"Hosted
Specifies the debug level of the linked G1 GC [product, fastdebug, or debug]. 
G1HeapRegionSizeint1048576Hosted
Size of the G1 regions in bytes. Supported values are 1, 2, 4, 8, 16, 32, 64, 128, 256, or 512M. 
G1HeapWastePercentint5Runtime
Amount of space, expressed as a percentage of the heap size, that G1 is willing not to collect to avoid expensive GCs. 
G1MixedGCCountTargetint8Runtime
The target number of mixed GCs after a marking cycle. 
G1PeriodicGCIntervalint0Runtime
Number of milliseconds after a previous GC to wait before triggering a periodic gc. A value of zero disables 
periodically enforced gc cycles.
G1PeriodicGCInvokesConcurrentbooltrueRuntime
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.0Runtime
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.
G1RSetUpdatingPauseTimePercentint10Runtime
A target percentage of time that is allowed to be spend on processing remembered set update buffers during the 
collection pause.
G1RefProcDrainIntervalint1000Runtime
The number of discovered reference objects to process before draining concurrent marking work queues. 
G1ReservePercentint10Runtime
It determines the minimum reserve we should have in the heap to minimize the probability of promotion failure. 
G1SATBBufferEnqueueingThresholdPercentint60Runtime
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.
G1SATBBufferSizeint1024Runtime
Number of entries in an SATB log buffer. 
G1UpdateBufferSizeint256Runtime
Size of an update buffer. 
G1UseAdaptiveIHOPbooltrueRuntime
Adaptively adjust the initiating heap occupancy from the initial value of InitiatingHeapOccupancyPercent. The policy 
attempts to start marking in time based on application behavior.
G1UseConcRefinementbooltrueRuntime
Control whether concurrent refinement is performed. Disabling effectively ignores G1RSetUpdatingPauseTimePercent.
G1VerifyHeapRegionCodeRootsboolfalseRuntime
Verify the code root lists attached to each heap region.
GCCardSizeInBytesint512Hosted
Card table entry size (in bytes) for the G1 GC. 
GCDebugStartCycleint-1Runtime
Start tracing compiled GC barriers after N garbage collections (disabled if N <= 0). 
GCDrainStackTargetSizeint64Runtime
Number of entries we will try to leave on the stack during gc. G1 GC only. 
GCPauseIntervalMillisint201Runtime
Time slice for MMU specification. G1 GC only. 
GCTimeRatioint12Runtime
Adaptive size policy application time to GC time ratio. G1 GC only. 
GatherSafepointStatisticsboolfalseHosted
Gather statistics about each safepoint.
GenJavaCodeFilterStringNoneRuntime
Generate Java code before high tier lowering for methods that MethodFilter.match this string.
GenJavaCodeSaveDirectoryStringNoneRuntime
Path for saving generated Java code. If the value is omitted the debug dump path will be used.
GenJavaCodeWithCommentsboolfalseRuntime
Generate comments alongside variable declarations.
GenLoopSafepointsbooltrueRuntime
GenerateBuildArtifactsFileboolfalseHosted
Create a build-artifacts.json file in the build directory. The output conforms to the JSON schema located at: 
docs/reference-manual/native-image/assets/build-artifacts-schema-v0.9.0.json.
GenerateDebugInfoint0Hosted
Insert debug info into the generated native image or library. 
GenericDynamicCountersboolfalseRuntime
Turn on the benchmark counters, and displays the results on VM shutdown.
GraalArithmeticStubsbooltrueRuntime
Use Graal arithmetic stubs instead of HotSpot stubs where possible.
GraalCompileOnlyStringNoneRuntime
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.
GraalOSboolfalseHosted
Compile the application for GraalOS.
GraphCompressionThresholdint70Runtime
Graal graph compression is performed when percent of live nodes falls below this value. 
GreyToBlackObjRefDemographicsboolfalseHosted
Develop demographics of the object references visited. Serial GC only.
GuardHoistingLoopDuplicationHoistFractiondouble0.5Runtime
Duplicate only loops where at least this fraction of guards can be hoisted.
GuardHoistingLoopDuplicationMaxSizeHotCodeint2048Runtime
See GuardHoistingLoopDuplicationMaxSize.
GuardHoistingLoopDuplicationMaxSizeint64Runtime
Duplicate only loops up to this estimated size. 
GuardHoistingLoopDuplicationMinBodyIterationsHotCodeint0Runtime
See GuardHoistingLoopDuplicationMinBodyIterations.
GuardHoistingLoopDuplicationMinBodyIterationsint4Runtime
Duplicate only loops with at least this many expected iterations of the loop body.
GuardHoistingLoopDuplicationMinHotnessint1Runtime
Duplicate only loops in methods executed at least this number of times. 
GuardHoistingLoopDuplicationbooltrueRuntime
Duplicate certain loops and eliminate their guards.
GuardMaxCondExitProbabilitydouble0.8Hosted
Maximum execution probability of a branch that contains the ControlSinkNode. 
GuardMinCondEstimatedAssemblydouble50.0Hosted
Minimum estimated assembly size of a branch that triggers the exit guard. 
GuardMinLoopProbabilitydouble0.2Hosted
Minimum loop body execution probability. 
GuardPrioritiesbooltrueRuntime
HeapChunkHeaderPaddingint0Hosted
Number of bytes at the beginning of each heap chunk that are not used for payload data, i.e., can be freely used as 
metadata by the heap chunk provider. Serial and epsilon GC only.
HeapDumpDefaultFilenamePrefixString"svm-heapdump-"Hosted
A prefix that is used for heap dump filenames if no heap dump filename was specified explicitly.
HeapDumpOnOutOfMemoryErrorboolfalseRuntime
Dump heap to file (see HeapDumpPath) the first time the image throws java.lang.OutOfMemoryError because it ran out of 
Java heap.
HeapDumpPath""Runtime
Path of the file or directory in which heap dumps are created. An empty value means a default file name will be used. An 
existing directory means the dump will be placed in the directory and have the default file name.
HeapSizePerGCThreadint44040192Runtime
Size of heap (bytes) per GC thread used in calculating the number of GC threads. G1 GC only. 
HeapVerifierVerbosityint0Runtime
Control heap verifier verbosity level: 0 - quiet, 1 - info, 2 - warning, 3 - all. 
HighTierInversionboolfalseRuntime
HighTierPartialUnrollingbooltrueRuntime
Enable EE partial unrolling in high tier.
HotCodeMinSelfTimedouble0.001Runtime
Minimal self time for a compilation unit to be considered hot globally. 
HotCompilationBaseTargetSpendingint300Hosted
BaseTargetSpending value for the hot compilations. 
HotCompilationCompilerNodePenaltyCoefficientdouble0.0Hosted
CompilerNodePenaltyCoefficient value for the hot compilations.
HotCompilationCutoffCodeSizePenaltyCoefficientdouble0.0Hosted
CutoffCodeSizePenaltyCoefficient value for the hot compilations.
HotCompilationExpansionInertiaBaseValueint550Hosted
ExpansionInertiaBaseValue value for the hot compilations.
HotCompilationLargeChildrenCountPenaltyCoefficientdouble0.0Hosted
LargeChildrenCountPenaltyCoefficient value for the hot compilations.
HotCompilationMaxPolymorphicDispatchesint3Hosted
MaxPolymorphicDispatches value for the hot compilations. 
HotCompilationMinPolymorphicDispatchProbabilitydouble0.09Hosted
MinPolymorphicDispatchProbability value for the hot compilations.
HotCompilationRelativeBenefitInliningCoefficientString2.0E-4Hosted
RelativeBenefitInliningCoefficient value for the hot compilations.
HotCompilationSmallRootIrPenaltyCoefficientdouble0.0Hosted
SmallRootIrPenaltyCoefficient value for the hot compilations.
HotCompilationTypicalGraphSizeInvokeBonusint20Hosted
TypicalGraphSizeInvokeBonus value for the hot compilations.
HotCompilationTypicalGraphSizeint4320Hosted
TypicalGraphSize value for the hot compilations. 
HotSpotDeoptExplicitExceptionsboolfalseRuntime
Testing only option that forces deopts for exception throws.
HotSpotPostOnExceptionsboolfalseRuntime
Testing only option that forces deopts for exception throws.
HotSpotPrintInliningboolfalseRuntime
Print inlining optimizations.
HybridStaticContextboolfalseRuntime
Enable hybrid context for static methods, i.e. uses invocation site as context for static methods.
IPEACutoffMaterializationWeightdouble0.0Hosted
Weight of a materialization triggered by an Invoke corresponding to a CutoffNode in the CallTree for IPEA. 
IPEAFrequencyint3Hosted
Indicates how often to run IPEA analysis. 
IPEAMaterializationBoostConstantint12Hosted
Boost for Parent Nodes based on reduction of materializations. 
IPEAMaxForceint2Hosted
Indicates how often to force IPEA analysis when otherwise inlining would not continue. 
IPEAStatisticsHistogramBucketsint12Hosted
Track IPEA statistics in substratePriorityInliner. 
IPEAVirtualEscapeBoostSingleint12Hosted
Boost for CutoffNode for single escaping object. 
IgnoreBadDuplicationsbooltrueRuntime
Ignore duplications with a bad benefit cost relation.
IgnoreDeoptUsagesbooltrueRuntime
ImageBuildID""Hosted
Image Build ID is a 128-bit UUID string generated randomly, once per bundle or digest of input args when bundles are not 
used.
ImageHeapCardMarkingboolHosted
Enables card marking for image heap objects, which arranges them in chunks. Automatically enabled when supported. Serial 
GC only.
ImageObjectTreeExpandRoots""Runtime
Override the default suppression of specified roots. See: StaticAnalysisReports.md. 
ImageObjectTreeExpandTypes""Runtime
Override the default suppression of specified types. See: StaticAnalysisReports.md. 
ImageObjectTreeSuppressRoots""Runtime
Suppress the expansion of specified roots. See: StaticAnalysisReports.md. 
ImageObjectTreeSuppressTypes""Runtime
Suppress the expansion of specified types. See: StaticAnalysisReports.md. 
ImageSymbolsPrefix""Hosted
Common prefix used by method symbols in image. 
IncludeAllLocalesboolfalseHosted
Make all hosted locales available at run time.
IncludeAllTimeZonesboolfalseHosted
When true, all time zones will be pre-initialized in the image.
IncludeDebugHelperMethodsboolfalseHosted
Determines if debugging-specific helper methods are embedded into the image. Those methods can be called directly from 
the debugger to obtain or print additional information.
IncludeLocalesString*Hosted
Comma separated list of locales to be included into the image. The default locale is included in the list automatically 
if not present.
IncludeMethodDatabooltrueHosted
Include a list of methods included in the image for runtime inspection.
IncludeNodeSourcePositionsboolfalseHosted
Track NodeSourcePositions during runtime-compilation.
IncludeResourceBundlesString*Hosted
Comma separated list of bundles to be included into the image. 
IncludeResourcesString*Hosted
Regexp to match names of resources to be included in the image. 
IncludeSBOMString*Hosted
Embed a Software Bill of Materials (SBOM) in the executable or shared library for passive inspection. A comma-separated 
list can contain 'cyclonedx',  'strict' (defaults to 'cyclonedx' if no argument is provided), or 'export' to save the
SBOM to the native executable's output directory. The optional 'strict' flag aborts the build if any class cannot be
matched to a library in the SBOM. For example: '--enable-sbom=cyclonedx,strict'.
IncludeTimeZones""Hosted
The time zones, in addition to the default zone of the host, that will be pre-initialized in the image. 
IndirectBranchTargetMarkerboolfalseHosted
Emit indirect branch target marker instructions.
InfeasiblePathCorrelationWindowSizeint10Runtime
Limit of the number of dominating if nodes to consider in infeasible path correlation to avoid compile time explosion. 
InfeasiblePathCorrelationbooltrueRuntime
InitialCollectionPolicyString"Adaptive"Hosted
The garbage collection policy, either Adaptive (default) or BySpaceAndTime. Serial GC only. 
InitialHeapSizeint0Runtime
Initial heap size (in bytes); zero means use ergonomics. G1 GC only. 
InitialRAMPercentagedouble1.5625Runtime
Percentage of real memory used for initial heap size. G1 GC only. 
InitiatingHeapOccupancyPercentint45Runtime
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. G1 GC
only.
InjectedCompilationDelayint0Runtime
The number of seconds by which to slow down each compilation. The compilations slowed down can be restricted with 
MethodFilter. This option exists to test the compilation watchdog.
InlineAllBonusdouble1.0Runtime
The bonus applied to call nodes that can be fully inlined. 
InlineBeforeAnalysisAllowedDepthint20Hosted
Maximum call depth for method inlined before static analysis. 
InlineBeforeAnalysisAllowedInvokesint1Hosted
Maximum number of invokes for method inlined before static analysis. 
InlineBeforeAnalysisAllowedNodesint1Hosted
Maximum number of computation nodes for method inlined before static analysis. 
InlineBeforeAnalysisMethodHandleAllowedInvokesint20Hosted
Maximum number of invokes for method handle internals inlined before static analysis.
InlineBeforeAnalysisMethodHandleAllowedNodesint100Hosted
Maximum number of computation nodes for method handle internals inlined before static analysis.
InlineBeforeAnalysisbooltrueRuntime
Inline methods before static analysis.
InlineDuringParsingMaxDepthint10Runtime
Maximum depth when inlining during bytecode parsing. 
InlineDuringParsingbooltrueRuntime
Inlines trivial methods during bytecode parsing.
InlineEverythingboolfalseRuntime
InlineGraalStubsboolfalseRuntime
Embed all the emitted code for Graal-generated stubs.
InlineMegamorphicCallsbooltrueRuntime
Inline calls with megamorphic type profile (i.e., not all types could be recorded).
InlineMonomorphicCallsbooltrueRuntime
Inline calls with monomorphic type profile.
InlinePartialIntrinsicExitDuringParsingbooltrueRuntime
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.
InlinePolymorphicCallsbooltrueRuntime
Inline calls with polymorphic type profile.
InlineVTableStubsbooltrueRuntime
InlinebooltrueRuntime
Enable inlining.
InlinedCompilerNodeLimitint20000Runtime
Controls the maximum number of compiler nodes that can be inlined into the compiled method. 
InliningCoefficientdouble0.02Runtime
The coefficient used to compute the inlining threshold; the higher, the more to inline. 
InliningDepthErrorint1000Runtime
Maximum inlining depth during partial evaluation before reporting an infinite recursion. 
InsertPreMainPostOnlyboolfalseRuntime
Do not unroll the main loop, only create pre-main-post.
InspectGraphsboolfalseRuntime
Inspect analysis graphs.
InspectServerContentPathString"inspect"Runtime
Path to the contents of the Inspect web server. 
InstallExitHandlersboolfalseHosted
Provide java.lang.Terminator exit handlers.
InstallSegfaultHandlerbooltrueRuntime
Install segfault handler that prints register contents and full Java stacktrace.
InterceptBailoutboolfalseRuntime
Intercept also bailout exceptions.
InternalSymbolsAreGlobalboolfalseHosted
Compatibility option to make symbols used for the image heap global. Using global symbols is problematic for shared 
libraries because the loader implicitly changes the value when the symbol is already defined in the executable loading
the library. Setting this option to true preserves the broken behavior of old Native Image versions.
InternalThreadStackSizeint2097152Hosted
The size of each internal thread stack, in bytes. 
IntrinsifyStringFormatbooltrueHosted
Intrinsify String.format with constant format strings.
IntrinsifybooltrueRuntime
Use compiler intrinsifications.
InversionMinLocalFrequencydouble2.0Runtime
Minimal loop frequency for a loop to be considered for inversion. 
InversionMinRelativeFrequencydouble1.0Runtime
Minimal relative frequency for a loop to be considered for inversion. 
InvertMultiEndLoopsboolfalseRuntime
InvertNonLeafLoopsboolfalseRuntime
InvertVectorizableLoopsboolfalseRuntime
IsolatedLoopHeaderAlignmentint32Runtime
Alignment in bytes for loop header blocks that have no fall through paths. 
IterativePeelingLimitint2Runtime
Allow iterative peeling of loops up to this many times (each time the peeling phase runs). 
IterativePeelingOuterFrequencyBonusThresholddouble4.0Runtime
Allow iterative peeling of loops with an outer frequency bonus above this value.
JNIConfigurationFilesString*Hosted
Files describing program elements to be made accessible via JNI (for syntax, see ReflectionConfigurationFiles). 
JNIConfigurationResourcesString*Hosted
Resources describing program elements to be made accessible via JNI (see JNIConfigurationFiles). 
JNIEnhancedErrorCodesboolfalseHosted
JNI functions will return more specific error codes.
JNIExportSymbolsbooltrueHosted
Export Invocation API symbols.
JNIVerboseLookupErrorsboolfalseHosted
Report information about known JNI elements when lookup fails.
JNIbooltrueHosted
Enable Java Native Interface (JNI) support.
LIRDynMoveProfileMethodboolfalseRuntime
Enable dynamic move profiling per method.
LIRInstructionVerifierPathStringNoneRuntime
Path to jar file containing LIR instruction verifier.
LIROptConstantLoadOptimizationboolNoneRuntime
Enable constant load optimization. 
LIROptControlFlowOptimizerboolRuntime
LIROptEdgeMoveOptimizerboolRuntime
LIROptLSRAEliminateSpillMovesboolRuntime
Enable spill move elimination. 
LIROptLSRAOptimizeSpillPositionboolRuntime
Enable spill position optimization. 
LIROptLSStackSlotAllocatorboolRuntime
Use linear scan stack slot allocation. 
LIROptNullCheckOptimizerboolRuntime
LIROptRedundantMoveEliminationboolRuntime
LIROptStackMoveOptimizerboolRuntime
LIROptimizationbooltrueRuntime
Enable LIR level optimizations.
LIRProfileMethodsboolfalseRuntime
Enables profiling of methods.
LIRProfileMovesboolfalseRuntime
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).
LSRAOptSplitOnlyboolfalseRuntime
LSRA optimization: Only split but do not reassign.
LSRAOptimizationboolfalseRuntime
Enable LSRA optimization.
LargeArrayThresholdint131072Hosted
The size at or above which an array will be allocated in its own unaligned chunk. Serial and epsilon GC only. 
LargeChildrenCountPenaltyCoefficientdouble0.005Runtime
Reduces the likelihood of exploring call graphs that have a lot of children below the root.
LimitInlinedInvokesdouble5.0Runtime
LimitObjectArrayLengthboolfalseRuntime
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.
LinkAtBuildTimePathsString*Hosted
Require all types in given class or module-path entries to be fully defined at image build-time. [Extra help available] 
LinkAtBuildTimeString*Hosted
Require types to be fully defined at image build-time. If used without args, all classes in scope of the option are 
required to be fully defined. [Extra help available]
LinkerRPathString*Hosted
Path passed to the linker as the -rpath (list of comma-separated directories). 
ListCPUFeaturesboolfalseHosted
Show CPU features specific to the target platform and exit.
ListMetricsboolfalseRuntime
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.
ListModulesboolfalseHosted
List observable modules and exit.
LoadExceptionObjectInVMboolfalseRuntime
Use a VM runtime call to load and clear the exception object from the thread at the start of a compiled exception 
handler.
LoadProfilesStringNoneRuntime
Load per compilation profile information.
LocalizationCompressBundlesString*Hosted
Regular expressions matching which bundles should be compressed. 
LocalizationCompressInParallelbooltrueHosted
Compress the bundles in parallel.
LocalizationOptimizedModeboolfalseHosted
Optimize the resource bundle lookup using a simple map.
LocalizationSubstituteLoadLookupbooltrueHosted
Store the resource bundle content more efficiently in the fallback mode.
LocalsPerCounterint16Runtime
Number of cpu locals per counter. It has to be a power of 2. 
LogFileStringNoneRuntime
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.
LogVerboseboolfalseRuntime
Enable more verbose log output when available.
LogStringNoneRuntime
Pattern for specifying scopes in which logging is enabled. See the Dump option for the pattern syntax.
LoopBoundOptimizationPhasebooltrueRuntime
Try to improve counted loop detection by finding more precise loop bounds.
LoopExitVsLoopEndFrequencyDiffdouble1000.0Runtime
Scaling factor of frequency difference computed based on loop ends or exits. 
LoopHeaderAlignmentint16Runtime
Alignment in bytes for loop header blocks. 
LoopInversionbooltrueRuntime
LoopMaxUnswitchint3Runtime
LoopOnFatalErrorboolfalseRuntime
Execute an endless loop before printing diagnostics for a fatal error.
LoopPeelingbooltrueRuntime
LoopPredicationMainPathbooltrueRuntime
Restricts LoopPredication to only focus on array bounds checks that dominate the back edge of a loop.
LoopPredicationbooltrueRuntime
Hoists array bounds checks out of simple loops. This is ignored if SpeculativeGuardMovement is enabled.
LoopRotationAssertCountedAfterboolfalseRuntime
LoopRotationToxicNodeSetMaxNodecostint512Runtime
Maximum size in NodeSize of the code to be duplicated during rotation. 
LoopRotationbooltrueRuntime
Enable Loop Rotation to let the compiler detect more loops as counted.
LoopUnswitchFrequencyBoostdouble20.0Runtime
Number of nodes allowed for a loop unswitching per loop frequency. The number of nodes allowed for the unswitching is 
proportional to the relative frequency of the loop by this constant.
LoopUnswitchFrequencyMaxFactordouble0.95Runtime
Maximun value for the frequency factor of an invariant. 
LoopUnswitchFrequencyMinFactordouble0.05Runtime
Minimum value for the frequency factor of an invariant. 
LoopUnswitchMaxIncreaseint2000Runtime
Maximum loop unswitching code size increase in nodes. 
LoopUnswitchMinSplitFrequencydouble1.0Runtime
Lower bound for the minimun frequency of an invariant condition to be unswitched. 
LoopUnswitchTrivialint20Runtime
Number of nodes allowed for a loop unswitching regardless of the loop frequency. 
LoopUnswitchbooltrueRuntime
LoopVectorizationKeepPostLoopboolfalseRuntime
Keep the original loop as the post-loop during loop vectorization.
MLGraphFeaturesExtractionboolfalseHosted
Extract graph ML features to support the profile inference in the GraalVM Native Image.
MLProfileInferenceGuardsbooltrueHosted
Employ guards to tune the ML-inferred profiles.
MLProfileInferencebooltrueHosted
Employ static profiler to infer profiles in the GraalVM Native Image.
MarkStackSizeMaxint536870912Runtime
Maximum size of marking stack. G1 GC only. 
MarkStackSizeint4194304Runtime
Size of marking stack. G1 GC only. 
MatchExpressionsbooltrueRuntime
Allow backend to match complex expressions.
MaxCallingContextDepthint0Runtime
The maximum length of the methods context chains. 
MaxCallingContextWidthint0Runtime
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.
MaxCompilationProblemsPerActionint2Runtime
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.
MaxConstantObjectsPerTypeint0Runtime
The maximum number of constant objects recorded for each type before merging the constants into one unique constant 
object per type. If the value is 0 there is no limit.
MaxDirectMemorySizeint0Runtime
Maximum total size of NIO direct-buffer allocations. 
MaxDuplicationAnchorint2147483647Runtime
Maximum duplication anchor number. 
MaxDuplicationFactordouble2.0Runtime
Max amount of extra effort to expend handling irreducible loops. A value <= 1 disables support for irreducible loops. 
MaxGCPauseMillisint200Runtime
Adaptive size policy maximum GC pause time goal in millisecond, or the maximum GC time per MMU time slice. G1 GC only. 
MaxGraphSizeNodeCostint100000Runtime
Maximum node cost graph size for duplication. If a graph is bigger duplication will stop. 
MaxHeapContextDepthint0Runtime
The maximum length of the context used to model a heap object in addition to the allocation site; used only when 
ContextSensitiveHeap is enabled.
MaxHeapContextWidthint0Runtime
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.
MaxHeapFreeint0Runtime
The maximum free bytes reserved for allocations, in bytes (0 for automatic according to GC policy). Serial GC only. 
MaxHeapSizeint0Runtime
The maximum heap size at run-time, in bytes. 
MaxInvokesInTrivialMethodint1Hosted
Maximum number of invokes in a method so that it is considered trivial (for testing only). 
MaxJavaStackTraceDepthint1024Runtime
The maximum number of lines in the stack trace for Java exceptions (0 means all). 
MaxMispredictionCostIncreaseFactordouble2.0Runtime
Abstract measure of the cost of branch misprediction. Higher values make generation of conditional moves more likely. 
MaxNewSizeint0Runtime
The maximum size of the young generation at run-time, in bytes. 
MaxNodesAfterTrivialInliningint2147483647Hosted
The maximum number of nodes in a graph allowed after trivial inlining. 
MaxNodesInTrivialLeafMethodint40Hosted
Maximum number of nodes in a method so that it is considered trivial, if it does not have any invokes. 
MaxNodesInTrivialMethodint20Hosted
Maximum number of nodes in a method so that it is considered trivial. 
MaxObjectSetSizeint100Runtime
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.
MaxPolymorphicDispatchesint4Runtime
The maximum number of dispatches in guarded polymorphic inlining. 
MaxPriorityInliningPeelingIterationsint10Runtime
Max number of precise inlining peeling iterations. 
MaxRAMPercentagedouble25.0Runtime
Maximum percentage of real memory used for maximum heap size. G1 GC only. 
MaxRAMint0Runtime
Physical memory size (in bytes). By default, the value is queried from the OS/container during VM startup. 
MaxReachableTypesint-1Hosted
Maximum number of types allowed in the image. Used for tests where small number of types is necessary. 
MaxRuntimeCodeOffsetInstructionsint0Hosted
The maximum number of instructions to randomly offset the entry of runtime installed methods. Use this option for less 
predictable entry points.
MaxRuntimeCompileMethodsString*Hosted
Maximum number of methods allowed for runtime compilation. 
MaxSimulationIterationsHotCodeint4Runtime
See MaxSimulationIterations. 
MaxSimulationIterationsint2Runtime
Maximum simulation-duplication iterations of the duplication optimization per invocation. 
MaxSplitsPerNodeint32Runtime
MaxSurvivorSpacesStringNoneHosted
Maximum number of survivor spaces. Serial GC only.
MaxTemplatesPerSnippetint50Runtime
MaxTenuringThresholdint15Runtime
Maximum value for tenuring threshold. G1 GC only. 
MaxThinLockRecursionint20Hosted
Maximum recursive locking depth for thin locks. 
MaxUnrolledObjectZeroingStoresint8Hosted
Define the maximum number of stores for which the loop that zeroes out objects is unrolled. 
MaxUnswitchSuccessorsint64Runtime
Maximum number of split successors before aborting unswitching. 
MaxValueNodesPartialEscapeSelectiveInliningint35000Runtime
Controls the maximum number of value nodes that can appear in the final graph.
MaxVectorAlignmentUnrollint4Runtime
Maximum number of unrolled alignment instructions. 
MaxVectorUnrollint16Runtime
Maximum length of linear-code vector operations. 
MaximumDesiredSizeint20000Runtime
Maximum desired size of the compiler graph in nodes. 
MaximumEscapeAnalysisArrayLengthint128Runtime
The maximum length of an array that will be escape analyzed. 
MaximumHeapSizePercentint80Runtime
The maximum heap size as percent of physical memory. Serial and epsilon GC only. 
MaximumInliningSizeint300Runtime
Inlining is explored up to this number of nodes in the graph for each call site. 
MaximumLoopExplosionCountint10000Runtime
Max number of loop explosions per method. 
MaximumRecursiveInliningint5Runtime
Maximum level of recursive inlining. 
MaximumTransitiveEnabledPullFactorint2Runtime
PullThroughPhiOptimization: Maximum number of algorithm iterations per optimization invocation. 
MaximumYoungGenerationSizePercentint10Runtime
The maximum size of the young generation as a percentage of the maximum heap size. Serial and epsilon GC only. 
MegamorphicInliningMinMethodProbabilitydouble0.33Runtime
Minimum probability for methods to be inlined for megamorphic type profiles.
MemUseTrackersStringNoneRuntime
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.
MethodFilterRootOnlyboolfalseRuntime
Only check MethodFilter against the root method in the context if true, otherwise check all methods.
MethodFilterStringNone [Extra help available]Runtime
Pattern for matching methods. The syntax for a pattern is:.
MethodInlineBailoutLimitint5000Runtime
Per-compilation method inlining exploration limit before giving up (use 0 to disable). 
MethodString"main"Hosted
Name of the main entry point method. Optional if --shared is used. 
MetricsFileStringNone [Extra help available]Runtime
File to which metrics are dumped per compilation.
MicroArchitectureStringNoneHosted
Generate instructions for a specific machine type. Defaults to 'x86-64-v3' on AMD64 and 'armv8-a' on AArch64. Use 
-march=compatibility for best compatibility, or -march=native for best performance if the native executable is deployed
on the same machine or on a machine with the same CPU features. To list all available machine types, use -march=list.
MidTierInversionbooltrueRuntime
MidTierPartialUnrollingbooltrueRuntime
Enable EE partial unrolling in mid tier.
MinBlockFrequencyPulldouble0.66Runtime
PullThroughPhiOptimization: Ignore low frequency branches during duplication. 
MinCallingContextDepthint0Runtime
The minimum length of the methods context chains. 
MinDuplicationAnchorint1Runtime
Skip n duplication anchors. 
MinHeapContextDepthint0Runtime
The minimum length of the context used to model a heap object in addition to the allocation site; used only when 
ContextSensitiveHeap is enabled.
MinHeapDeltaBytesint172032Runtime
The minimum change in heap space due to GC (in bytes). G1 GC only. 
MinHeapFreeRatioint40Runtime
The minimum percentage of heap free after GC to avoid expansion. G1 GC only. 
MinHeapSizeint0Runtime
The minimum heap size at run-time, in bytes. 
MinPolymorphicDispatchProbabilitydouble0.1Runtime
The minimum probability for using a dispatch in guarded polymorphic inlining. 
MinRAMPercentagedouble50.0Runtime
Minimum percentage of real memory used for maximum heap size on systems with small physical memory size. G1 GC only. 
MinTLABSizeint2048Runtime
Minimum allowed TLAB size (in bytes). G1 GC only. 
MinifyInvertedPhisbooltrueRuntime
Break chained phis.
MinimalBulkZeroingSizeint2048Runtime
If applicable, use bulk zeroing instructions when the zeroing size in bytes exceeds this threshold. 
MinimalGraphNodeSizeCheckSizeint1000Runtime
Minimal size in NodeSize to check the graph size increases of phases. 
MinimalRegionsbooltrueRuntime
Try to reduce duplication code size to the minimal amount of code.
MinimumBlindedConstantSizeint4Runtime
Minimum size (in bytes) of constants to blind. 
MinimumPeelFrequencydouble0.35Runtime
MissingRegistrationReportingModeStringThrowHosted
Select the mode in which the missing reflection registrations will be reported. [Extra help available] 
Module""Hosted
Module containing the class that contains the main entry point. Optional if --shared is used. 
MoveGuardsUpwardsbooltrueRuntime
Move guard nodes to earlier places in the dominator tree if all successors of basic block share a common guard 
condition.
MultiExitCostFactorSinkint2Runtime
Cost/Benefit heuristic for EE unrolling: If a loop has multiple exits, cost is increased by this value for every sinking 
loop exit.
MultiExitCostFactorint32Runtime
Cost/Benefit heuristic for EE unrolling: If a loop has multiple exits, cost is increased by this value for every 
none-sinking loop exit.
MultiThreadedbooltrueHosted
Enable support for threads and and thread-local variables (disable for single-threaded implementation).
NDCVint0Runtime
Run level for NoDeadCodeVerifyHandler (0 = off, 1 = info, 2 = verbose, 3 = fatal). 
Name""Hosted
Name of the output file to be generated. 
NativeArchitectureboolfalseHosted
Uses the native architecture, i.e., the architecture of a machine that builds an image.
NativeLinkerOptionString*Hosted
Pass the provided raw option that will be appended to the linker command to produce the final binary. The possible 
options are platform specific and passed through without any validation.
NeverInlineString*Hosted
Pattern for disabling inlining of methods during image generation. [Extra help available] 
NewCAPCacheboolfalseHosted
Create a C Annotation Processor Cache. Will erase any previous cache at that same location.
NewRatioint2Runtime
Ratio of old/new generation sizes. G1 GC only. 
NewSizeint1048576Runtime
Initial new generation size (in bytes). G1 GC only. 
NonCountedStripMinedBenefitBoostint64Runtime
Benefit boost for strip mined non counted loops. 
NonCountedStripMiningBudgetHotCodedouble2.5Runtime
See NonCountedStripMiningBudget. 
NonCountedStripMiningBudgetdouble0.1Runtime
Code size budget of the non-counted strip mining transformation in terms of NodeCostSize. 
NonCountedStripMiningForceStripAllboolfalseRuntime
Force non-counted strip mining for all loops (also counted ones), test flag only.
NonCountedStripMiningIgnoreSmallLoopsbooltrueRuntime
Ignore small loops from strip mining, the iv overhead can cause slowdowns.
NonCountedStripMiningInnerLoopTripsint-1Runtime
The max number of iterations the counted inner loop takes. If -1, the frequency of the loop will be used to derive an 
inner frequency.
NonCountedStripMiningMaximumInnerLoopTripsint8192Runtime
If NonCountedStripMiningInnerLoopTrips == -1: Maximum loop trips for strip mined non-counted loops.
NonCountedStripMiningMinFrequencydouble16.0Runtime
Minimal loop frequency to consider a non-counted loop for strip mining. 
NonCountedStripMiningMinimumInnerLoopTripsint512Runtime
If NonCountedStripMiningInnerLoopTrips == -1: Minimum loop trips for strip mined non-counted loops.
NonCountedStripMiningReuseIVsbooltrueRuntime
Try to reuse pre-existing induction variables inside non-counted loops for the strip-mined loop's exit check.
NumberOfAnalysisThreadsint-1Hosted
The number of threads to use for analysis during native image generation. The number must be smaller than the 
NumberOfThreads.
NumberOfThreadsint8Hosted
The maximum number of threads to use concurrently during native image generation. 
ObjdumpExecutablesStringNoneRuntime
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.
ObjectInliningConfigurationFilesString*Hosted
Files describing Java fields that have value semantics. 
ObjectInliningConfigurationResourcesString*Hosted
Resources describing Java fields that have value semantics.
ObjectInliningbooltrueHosted
Enable object inlining.
OldPLABSizeint1024Runtime
Size of old gen promotion LAB's (in HeapWords). G1 GC only. 
OldSizeint5242880Runtime
Initial tenured generation size (in bytes). G1 GC only. 
OmitHotExceptionStacktraceboolfalseRuntime
OmitInlinedMethodDebugLineInfoboolfalseHosted
Omit generation of DebugLineInfo originating from inlined methods.
OptAssumptionsbooltrueRuntime
OptBulkAllocationbooltrueRuntime
OptCompressedFrameStateValuesbooltrueRuntime
OptConditionalMovesbooltrueRuntime
Optimize simple if branches with conditional moves.
OptConvertDeoptsToGuardsbooltrueRuntime
OptDeDuplicationbooltrueRuntime
OptDeoptimizationGroupingbooltrueRuntime
OptDevirtualizeInvokesOptimisticallybooltrueRuntime
OptDuplicationbooltrueRuntime
OptEarlyReadEliminationbooltrueRuntime
OptEliminateGuardsbooltrueRuntime
OptExactArithmeticbooltrueRuntime
OptFastMonitorExitbooltrueRuntime
Straighten monitor enter/exit paths through duplication.
OptFloatingReadsbooltrueRuntime
OptGuardRangeGroupingbooltrueRuntime
OptImplicitNullChecksbooltrueRuntime
OptInlineImageHeapConstantsbooltrueHosted
Optimize address operations that involve image heap constants.
OptLockEliminationbooltrueRuntime
OptLoopPhiStampsbooltrueRuntime
Inject stamps on induction variables.
OptMethodDuplicationboolfalseRuntime
Duplicate methods to form hot part and cold part areas.
OptPropagateEqualitybooltrueRuntime
Propagate equality into dominated nodes.
OptPullThroughPhibooltrueRuntime
OptReadEliminationbooltrueRuntime
OptScheduleOutOfLoopsbooltrueRuntime
OptStaticFinalFieldFoldingbooltrueHosted
Optimize static final fields that get a constant assigned in the class initializer.
OptStringConcatDumpUnhandledboolfalseRuntime
Dump graphs to help debug operation.
OptStringConcatDumpboolfalseRuntime
Dump graphs to help debug operation.
OptStringConcatbooltrueRuntime
Optimize StringBuilder construction.
OptWriteBarrierEliminationbooltrueRuntime
Eliminate redundant write barriers.
OptWriteMotionboolfalseRuntime
Perform write sinking, which moves writes inside loops after them, effectively reducing their frequency.
OptimisticAliasingAnalysisbooltrueRuntime
OptimisticAliasingUseSpeculationbooltrueRuntime
Use speculation and deoptimization in optimistic aliasing analysis.
OptimizationLogPathStringNoneRuntime
Path to the directory where the optimization log is saved if OptimizationLog is set to Directory. Directories are 
created if they do no exist.
OptimizationLogStringNone [Extra help available]Runtime
Enable the structured optimization log and specify where it is printed.
OptimizeLoopAccessesbooltrueRuntime
Enable access node optimizations for loops.
OptimizeReturnedParameterbooltrueRuntime
Analysis: Detect methods that return one of their parameters and hardwire the parameter straight to the return.
OptimizeVectorAPIbooltrueRuntime
Expand Vector API operations to optimized machine instructions.
Optimizeint"2"Hosted
Control code optimizations: b - optimize for fastest build time, 0 - no optimizations, 1 - basic optimizations, 2 - 
advanced optimizations, 3 - all optimizations for best performance.
OptionalIdentityHashCodesbooltrueHosted
Allocate memory for identity hash codes only for those objects that need it. 
OutlineAllocationsbooltrueHosted
Outline allocations into factory methods.
OutlineIndyStringConcatenationsbooltrueHosted
Outline string concatenation operations represented by invoke dynamic (indy) calls.
OutlineSBMaterializationsbooltrueHosted
Allow outlined sequences of (StringBuilder|StringBuffer).append() to be materialized into a 
(StringBuilder|StringBuilder) instance.
OutlineStringBufferAppendsbooltrueHosted
Attempt to outline sequences of StringBuffer.append() operations.
OutlineStringBuilderAppendsbooltrueHosted
Attempt to outline sequences of StringBuilder.append() operations.
OverrideProfilesboolfalseRuntime
Allow multiple compilations of the same method by overriding existing profiles.
PGOAdoptedProfilesNormalizationValueint100000000000000Hosted
The value that will be used to normalize adopted profiles.
PGOContextSensitivityEnabledbooltrueHosted
Enables context sensitivity in PGO.
PGOEnableProfileNormalizationboolfalseHosted
Enable/disable normalization of profiles.
PGOEnabledString*Hosted
A comma-separated list of files from which to read the data collected for profile-guided optimization of AOT compiled 
code (reads from default.iprof if nothing is specified). Each file must contain a single PGOProfiles object, serialized
in JSON format, optionally compressed by gzip. .
PGOPrintDroppedCallingContextsboolfalseHosted
Print a list of all calling-contexts that are dropped during a PGO run.
PGOProfilesNormalizationValueint1000000000000000Hosted
The value that will be used to normalize collected profiles.
PLABWeightint75Runtime
Percentage (0-100) used to weight the current sample when computing exponentially decaying average for ResizePLAB. G1 GC 
only.
PageSizeint0Hosted
Define PageSize of a machine that runs the image. The default = 0 (== same as host machine page size). 
ParGCArrayScanChunkint50Runtime
Scan a subset of object array and push remainder, if array is bigger than this. G1 GC only. 
ParallelGCBufferWastePctint10Runtime
Wasted fraction of parallel allocation buffer. G1 GC only. 
ParallelGCThreadsint0Runtime
Number of parallel threads G1 will use. 
ParallelRefProcBalancingEnabledbooltrueRuntime
Enable balancing of reference processing queues. G1 GC only.
ParallelRefProcEnabledboolfalseRuntime
Enable parallel reference processing whenever possible. G1 GC only.
ParseOnceJITbooltrueHosted
When true, each compiler graph version (DeoptTarget, AOT, JIT) needed for runtime compilation will be separately 
analyzed during static analysis.When false, only one version of the compiler graph (AOT) will be used in static
analysis, and then three new versions will be parsed for compilation.
ParseOncebooltrueHosted
When true, compiler graphs are parsed only once before static analysis. When false, compiler graphs are parsed for 
static analysis and again for AOT compilation.
ParseRuntimeOptionsbooltrueHosted
Parse and consume standard options and system properties from the command line arguments when the VM is created.
ParsingContextMaxDepthint100Runtime
Limit the parsing context depth. Default value is arbitrary set at 100. 
PartialEscapeAnalysisbooltrueRuntime
PartialRedundancyEliminationbooltrueRuntime
Enable partial redundancy elimination.
PartialUnrollCostReductionFactorHighTierint2Runtime
Cost/Benefit heuristic for EE unrolling in high tier: reduce cost by a constant factor when comparing with relative
benefit.
PartialUnrollCostReductionFactorHotCodeMidTierint32Runtime
See PartialUnrollCostReductionFactorMidTier.
PartialUnrollCostReductionFactorMidTierint8Runtime
Cost/Benefit heuristic for EE unrolling in mid tier: reduce cost by a constant factor when comparing with relative 
benefit.
PartialUnrollMaxIterationsHighTierint4Runtime
Maximum number of iterations to unroll for a high tier main loop. 
PartialUnrollMaxIterationsMidTierint16Runtime
Maximum number of iterations to unroll for a mid tier main loop. 
PartialUnrollMaxSizeHighTierint256Runtime
Maximum node cost size of a loop to be considered for high tier unrolling. 
PartialUnrollMaxSizeHotCodeMidTierint1024Runtime
See PartialUnrollMaxSizeMidTier. 
PartialUnrollMaxSizeMidTierint256Runtime
Maximum node cost size of a loop to be considered for mid tier tier unrolling. 
PartialUnrollMinFrequencyint4Runtime
Minimal loop frequency to consider a loop for partial unrolling. 
PartialUnrollbooltrueRuntime
PathProfileCutThresholdint10Runtime
The limit on the number of paths at control-flow merges. Decreasing this value reduces the number of paths, but also 
shortens them.
PathProfileDumpFileStringNoneRuntime
Dump information for path profile (null or file name). If set to null, then dumping is disabled.
PathProfileFrequentThresholdint500Runtime
Maximum acceptable number of paths coming from the inbound of a merge if both of them are frequent. 
PathProfileGlobalLowFrequencyRatiodouble0.1Runtime
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.0Runtime
If the ratio of the merge's frequency with its inbound's frequency is greater than this threshold, then the inbound is 
considered infrequent.
PathProfileMaxTotalCountersint4000000Runtime
Maximum number of counters to use in path profiling for all instrumented methods. 
PathProfilePolicyStringNoneRuntime
Enable or disable the path-profiling algorithm. If it enables it, it also allows to select which mode to execute. 
PathProfileRegenerateboolfalseRuntime
Controls whether the path-regeneration algorithm is executed.
PathStringNoneHosted
Directory of the image file to be generated.
PeelALotboolfalseRuntime
Stress test for the loop peeling optimization by applying it aggressively.
PeelOnlyLoopWithNodeIDint-1Runtime
Peel only the loop with the specific loop begin node ID for debugging purposes. 
PeelingConsideredMinLoopIterationsdouble1.5Runtime
Minimal loop body iterations necessary to consider peeling. 
PeelingConsideredMinRelativeFrequencydouble4.0Runtime
Minimal relative frequency of loop begin necessary to consider peeling. 
PeelingHighTierCostReductionFactordouble64.0Runtime
Cost/Benefit heuristic for EE simulation-based loop peeling in high tier: reduce cost by a constant factor when 
comparing with relative benefit.
PeelingMidTierCostReductionFactordouble8.0Runtime
Cost/Benefit heuristic for EE simulation-based loop peeling in mid tier: reduce cost by a constant factor when comparing 
with relative benefit.
PenalizeComplexLoopControlFlowbooltrueRuntime
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.
PercentTimeInIncrementalCollectionint50Runtime
Percentage of total collection time that should be spent on young generation collections. Serial GC with collection 
policy 'BySpaceAndTime' only.
PerfDataMemoryMappedFilebooltrueHosted
Determines if the collected performance data should be written to a memory-mapped file so that it can be accessed by 
external tools.
PerfDataMemorySizeint32768Runtime
Size of performance data memory region. Will be rounded up to a multiple of the native os page size. 
PerfDataSamplingIntervalint200Runtime
Jvmstat instrumentation sampling interval (in milliseconds). 
PerfMaxStringConstLengthint1024Runtime
Maximum PerfStringConstant string length before truncation. 
PhiMinificationMinimalLoopFrequencydouble2.0Runtime
Minimal loop frequency to consider a loop for inverted phi minifaction. 
PinnedObjectAddressingbooltrueHosted
Allows the addresses of pinned objects to be passed to other code.
PlatformInterfaceCompatibilityModeboolfalseHosted
Enable the behavior of old GraalVM versions. When enabled, interfaces not available for the current platform are 
filtered.
PreTouchParallelChunkSizeint1073741824Runtime
Per-thread chunk size for parallel memory pre-touch. G1 GC only. 
PredefinedClassesConfigurationFilesString*Hosted
Files describing predefined classes that can be loaded at runtime according to the schema at
https://github.com/oracle/graal/blob/master/docs/reference-manual/native-image/assets/predefined-classes-config-schema-v1.0.0.json.
PredefinedClassesConfigurationResourcesString*Hosted
Resources describing predefined classes that can be loaded at runtime according to the schema at
https://github.com/oracle/graal/blob/master/docs/reference-manual/native-image/assets/predefined-classes-config-schema-v1.0.0.json.
PreferUnsignedComparisonbooltrueRuntime
Rewrite signed comparisons to unsigned ones if the result is equal.
PrefetchCopyIntervalInBytesint-1Runtime
How far ahead to prefetch destination area (<= 0 means off). G1 GC only. 
PrefetchScanIntervalInBytesint-1Runtime
How far ahead to prefetch scan area (<= 0 means off). G1 GC only. 
PreserveFramePointerboolfalseHosted
Saves stack base pointer on the stack on method entry.
PreventStringValueEscapingbooltrueHosted
Determines if aggressive method inlining should be used to prevent escaping of String.value.
PrintAOTCompilationboolfalseHosted
Print logging information during compilation.
PrintAnalysisCallTreeTypeStringTXTRuntime
Change the output format of the analysis call tree, available options are TXT and CSV. See: Reports.md. 
PrintAnalysisCallTreeboolfalseRuntime
Print analysis call tree, a breadth-first tree reduction of the call graph.
PrintAnalysisStatisticsboolfalseRuntime
Print analysis results statistics.
PrintBBInfoboolfalseRuntime
Enables dumping of basic blocks relative PC and frequencies in the dump directory.
PrintBackendCFGboolfalseRuntime
Enable dumping scheduled HIR, LIR, register allocation and code generation info to the C1Visualizer.
PrintBlockMappingboolfalseRuntime
Enable dumping CFG built during initial BciBlockMapping.
PrintCallEdgesboolfalseRuntime
Print call edges with other analysis results statistics.
PrintCanonicalGraphStringFlavorint0Runtime
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).
PrintCanonicalGraphStringsboolfalseRuntime
Enable dumping canonical text from for graphs.
PrintClassInitializationboolfalseHosted
Prints class initialization info for all classes detected by analysis.
PrintCompilationboolfalseRuntime
Print an informational line to the console for each completed compilation.
PrintDetailedAllocationProfilingbooltrueRuntime
Print detailed information for each allocation site.
PrintFeaturesboolfalseHosted
Print a list of active features.
PrintFlagsWithExtraHelpStringNoneRuntime
Print extra help, if available, based on comma-separated option names. Pass * to show all options that contain extra 
help.
PrintFlagsStringNoneRuntime
Show available options based on comma-separated option-types (allowed categories: User, Expert, Debug).
PrintGCSummaryboolfalseRuntime
Print summary GC information after application main method returns. Serial GC only.
PrintGCTimeStampsboolfalseRuntime
Deprecated. Print a time stamp at each collection, if +PrintGC or +VerboseGC. Serial GC only.
PrintGCTimesboolfalseRuntime
Print the time for each of the phases of each collection, if +VerboseGC. Serial GC only.
PrintGCboolfalseRuntime
Print summary GC information after each collection.
PrintGOTboolfalseHosted
Prints the contents of the GOT.
PrintGraphFilebooltrueRuntime
Setting to true sets PrintGraph=file, setting to false sets PrintGraph=network.
PrintGraphHostdouble"127.0.0.1"Runtime
Host part of the address to which graphs are dumped. 
PrintGraphPortint4445Runtime
Port part of the address to which graphs are dumped in binary format. 
PrintGraphStateDiffboolfalseRuntime
Prints the difference in the graph state caused by each phase of the suite.
PrintGraphWithScheduleboolfalseRuntime
Schedule graphs as they are dumped.
PrintGraphStringFileRuntime
Where IdealGraphVisualizer graph dumps triggered by Dump or DumpOnError should be written. [Extra help available] 
PrintHeapHistogramboolfalseHosted
Print class statistics of native image heap.
PrintIRWithLIRboolfalseRuntime
Print HIR along side LIR as the latter is generated.
PrintImageElementSizesboolfalseHosted
Print the sizes of the elements of the built image.
PrintImageHeapConnectedComponentsboolfalseHosted
A native-image run with the flag `-H:+PrintImageHeapConnectedComponents` will create reports that can help us debug 
which objects got into the native image heap and why. A component represents a set of objects in the image heap.
PrintImageHeapPartitionSizesboolfalseHosted
Print the sizes of the native image heap as the image is built.
PrintImageObjectTreeboolfalseRuntime
Print image object hierarchy.
PrintJNIMethodsboolfalseHosted
Print JNI methods added to generated image.
PrintLIRWithAssemblyboolfalseRuntime
Include the LIR as comments with the final assembly.
PrintLoweringScheduleToTTYboolfalseRuntime
Print schedule result pre lowering to TTY.
PrintMethodHistogramboolfalseHosted
Print statistics of methods in native image heap.
PrintOutlinedSBMethodMetricsboolfalseHosted
Print histogram and metrics about the OutlinedSBMethods created.
PrintPointsToStatisticsboolfalseRuntime
Report analysis statistics.
PrintProfileLoadingboolfalseRuntime
Print to stdout when a profile is loaded.
PrintProfilingInformationboolfalseRuntime
Print profiling information when parsing a method's bytecode.
PrintRestrictHeapAccessPathbooltrueHosted
Print path for @RestrictHeapAccess warnings.
PrintRestrictHeapAccessWarningsbooltrueHosted
Print warnings for @RestrictHeapAccess annotations.
PrintRuntimeCompilationCallTreeboolfalseHosted
Print call tree of methods reachable for runtime compilation.
PrintRuntimeCompileMethodsboolfalseHosted
Print methods available for runtime compilation.
PrintSBOutliningCountersboolfalseHosted
Print counters collected while attempting to outline sequences of StringBuffer and StringBuilder operations.
PrintSynchronizedAnalysisboolfalseRuntime
Print types used for Java synchronization.
PrintUninterruptibleCalleeDOTGraphboolfalseHosted
Print (to stderr) a DOT graph of the @Uninterruptible annotations.
PrintUniverseboolfalseHosted
Print information about classes, methods, and fields that are present in the native image.
PrintUnmodifiedGraphsbooltrueRuntime
Dump a graph even if it has not changed since it was last dumped. Change detection is based on adding and deleting 
nodes or changing inputs.
PriorityForceInlineStringNoneRuntime
Unconditionally inline all methods matching the pattern using the priority-based inliner. See the MethodFilter option 
for a description of the pattern syntax.
PriorityInliningPolicy""Runtime
The policy to use, must be empty for automatic resolution. 
PriorityInliningTuningPolicyString"DomainSpecific"Runtime
Comma-separated list of analysis policies for exploring the methods in the call graph and for inlining, empty for no
policy.
PriorityNeverInlineStringNoneRuntime
Never inline methods matching the pattern using the priority-based inliner. See the MethodFilter option for a 
description of the pattern syntax.
ProfileAllocationsContextStringAllocatingMethodRuntime
Control the naming and granularity of the counters when using ProfileAllocations. [Extra help available]
ProfileAllocationsboolfalseRuntime
Enable profiling of allocation sites.
ProfileAnalysisOperationsboolfalseRuntime
Track the progress of the static analysis.
ProfileCompiledMethodsboolfalseRuntime
ProfileConstantObjectsboolfalseRuntime
Track the creation of constant objects.
ProfileDeoptimizationboolfalseHosted
Print logging information during object file writing.
ProfileLockEliminationboolfalseRuntime
ProfileMethodFilterStringNoneRuntime
Restrict saving or loading of profiles based on this filter. See the MethodFilter option for the pattern syntax.
ProfileMonitorsboolfalseRuntime
Enable profiling of monitor operations.
ProfileOptBulkAllocationboolfalseRuntime
ProfileSelfTimebooltrueRuntime
Excludes time spent in invoked methods; measures total time including subcalls when turned off.
ProfilesDumpFileString"default.iprof"Runtime
Value should point to a profile dump file. 
ProfilingDumpPeriodint-1Runtime
Integer greater than zero representing the duration in seconds that will be used to trigger a profile dump. Any integer 
less than one disables periodic dumps.
ProfilingDumpVerboseboolfalseRuntime
Emit a message to stderr after dumping a profile.
ProfilingEnablePathProfilingboolfalseHosted
Replace profiling counters with path-profiling counters.
ProfilingEnableProfileDumpHooksbooltrueHosted
Dump the PGO profiles on shutdown.
ProfilingEnabledboolfalseHosted
Instrument AOT compiled code to collect data for profile-guided optimization into default.iprof file.
ProfilingPackagePrefixesStringNoneHosted
A comma-separated list of package prefixes for which the PGO profiles are collected.
ProfilingPathProfilingVerifyboolfalseHosted
Collect profiling counters, and verify that they match the path-profile counters.
ProfilingRDPIDboolfalseHosted
Use RDTSCP or RDPID if available to compute the index in the counter array. Setting this option to false ensures Knuth 
hashing is used instead.
PropagateEqualityDepthint6Runtime
Maximum depth of dependency when propagating equals property. 
ProtectionKeysboolfalseHosted
Enable support for Memory Protection Keys.
PruneLargeDominatorUsageTreesbooltrueRuntime
PullThroughPhiCodeSizeIncreaseHotCodedouble2.5Runtime
See PullThroughPhiCodeSizeIncrease. 
PullThroughPhiCodeSizeIncreasedouble0.1Runtime
PullThroughPhiOptimization: Percentage in node cost graph size for the floating node duplication budget. Computed 
relative to the method's graph size.
QueryCodeDir""Hosted
Directory where query code for target platform should be output. 
QueuedAllocationWarningCountint0Runtime
Number of times an allocation that queues behind a GC will retry before printing a warning. G1 GC only. 
RawConditionalEliminationbooltrueRuntime
ReadEliminationMaxLoopVisitsint5Runtime
ReadProxySchedulingStrategyStringLATEST_OUT_OF_LOOPSRuntime
Chose the scheduling strategy for inserting the read proxies.
ReassociateExpressionsbooltrueRuntime
Re-associate loop invariants and constants.
ReduceDCEbooltrueRuntime
Disable optional dead code eliminations.
ReflectionConfigurationFilesString*Hosted
One or several (comma-separated) paths to JSON files that specify which program elements should be made available via 
reflection. [Extra help available]
ReflectionConfigurationResourcesString*Hosted
Resources describing program elements to be made available for reflection (see ReflectionConfigurationFiles).
ReflectionPluginTracingboolfalseHosted
Enable trace logging for reflection plugins.
RegisterPressureStringNoneRuntime
Comma separated list of registers that register allocation is limited to.
RelativeBenefitInliningCoefficientdouble0.001Runtime
The coefficient used to compute the inlining threshold; the higher, the hard to inline. 
RelaxTypeFlowStateConstraintsbooltrueRuntime
Allow a type flow state to contain types not compatible with its declared type.
RemoveLoopSafepointsbooltrueRuntime
Remove safepoints on counted loop ends.
RemoveNeverExecutedCodebooltrueRuntime
RemoveSaturatedTypeFlowsbooltrueRuntime
Enable the type flow saturation analysis performance optimization.
RemoveUnneededDeoptSupportbooltrueHosted
Remove Deopt(Entries,Anchors,Proxies) determined to be unneeded after the runtime compiled graphs have been finalized.
RemoveUnusedSymbolsbooltrueHosted
Use linker option to prevent unreferenced symbols in image.
ReplaceInputsWithConstantsBasedOnStampsbooltrueRuntime
ReportAnalysisForbiddenTypeString*Hosted
Report error if [:{,}] is discovered during analysis (valid values for UsageKind: 
InHeap, Allocated, Reachable).
ReportExceptionStackTracesboolfalseHosted
Show exception stack traces for exceptions during image building.).
ReportPerformedSubstitutionsboolfalseHosted
Report performed substitutions.
ReportUnsafeOffsetWarningsboolfalseHosted
Print unsafe operation offset warnings.).
ReportUnsupportedElementsAtRuntimeboolfalseHosted
Report usage of unsupported methods and fields at run time when they are accessed the first time, instead of as an error 
during image building.
ReservedAddressSpaceSizeint0Runtime
Default size in bytes of the address space to reserve. 
ReservedAuxiliaryImageBytesint0Hosted
Size in bytes of an address space to reserve for auxiliary images. 
ResizePLABbooltrueRuntime
Dynamically resize (survivor space) promotion LAB's. G1 GC only.
ResizeTLABbooltrueRuntime
Dynamically resize TLAB size for threads. G1 GC only.
ResourceConfigurationFilesString*Hosted
Files describing Java resources to be included in the image according to the schema at 
https://github.com/oracle/graal/blob/master/docs/reference-manual/native-image/assets/resource-config-schema-v1.0.0.json.
ResourceConfigurationResourcesString*Hosted
Resources describing Java resources to be included in the image according to the schema at 
https://github.com/oracle/graal/blob/master/docs/reference-manual/native-image/assets/resource-config-schema-v1.0.0.json.
RespectVectorizationbooltrueRuntime
Try avoid unrolling vectorizable loops.
ReturnAfterAnalysisboolfalseHosted
Return after analysis.
ReuseRecursiveDuplicatedMethodsbooltrueRuntime
Do not duplicate recursive methods but rather reuse a previous duplicate.
RewriteStripMinedCounterTo32BitbooltrueRuntime
Rewrite the counter of a strip mined loop to have a 32bit type.
RootSizePenaltyCoefficientdouble0.1Runtime
Reduces likelihood of spending a lot of time inlining when the IR is already large. 
RootSizePenaltyTypicalGraphSizeint3250Runtime
At what size of the root IR graph do we start to consider applying a exploration penalty. 
RotateNonLeafLoopsboolfalseRuntime
RotationMinLocalFrequencydouble2.0Runtime
Minimal loop frequency for a loop to be considered for rotation. 
RotationMinRelativeFrequencydouble1.0Runtime
Minimal relative frequency for a loop to be considered for rotation. 
RunMainInNewThreadboolfalseHosted
Initializes and runs main entry point in a new native thread.
RunReachabilityHandlersConcurrentlybooltrueHosted
Run reachability handlers concurrently during analysis.
RuntimeAssertionsString*Hosted
Enable or disable Java assert statements at run time. 
RuntimeCheckedCPUFeaturesString*Hosted
Comma separated list of CPU features that will be enabled for runtime checks. The native image may check at run time if 
such features are supported by the target CPU, and can optimize certain operations based on this information. If a
feature is not supported at run time, a less optimized variant will be executed. Because of the presence of multiple
code variants, enabling runtime features can result in larger executables. To completely turn off runtime checked CPU
features, set this option to the empty string. The specific options available are target platform dependent. See
--list-cpu-features for feature list. The default values are: AMD64: 'AVX,AVX2'; AArch64: ''.
RuntimeCompilationInlineBeforeAnalysisbooltrueHosted
Perform InlineBeforeAnalysis on runtime compiled methods.
RuntimeSystemAssertionsboolfalseHosted
Enable or disable Java system assertions at run time.
SIMDArithmeticReduceMinLengthint16Runtime
Minimum vector length for matching SIMD arithmetic reduce patterns. 
SIMDVectorizationCheckLoadGroupProfitabilitybooltrueRuntime
Check for profitability when grouping memory loads to SIMD loads.
SIMDVectorizationDirectLoadStoreboolfalseRuntime
Allow SIMDVectorization to vectorize load to store opportunities when there are no matching SIMD operations between load 
and store.
SIMDVectorizationSingletonsboolfalseRuntime
Enable matching of singleton groups to increase corner-case matching.
SIMDVectorizationVolatileLoadsboolfalseRuntime
Allow load grouping to include grouping of volatile loads. Note currently this may generate incorrect results.
SIMDVectorizationVolatileWritesboolfalseRuntime
Allow store grouping to include grouping of volatile writes. Note currently this may generate incorrect results.
SIMDVectorizationWindowSizeint4Runtime
Set the number of dominating and dominated blocks scanned per block. 
SafepointCheckInEpiloguebooltrueHosted
Check for safepoints in method epilogue.
SafepointPromptnessFailureNanosint0Runtime
Exit the VM if I can not come to a safepoint in this many nanoseconds. 0 implies forever. 
SafepointPromptnessWarningNanosint0Runtime
Print a warning if I can not come to a safepoint in this many nanoseconds. 0 implies forever. 
SafepointSamplerStats""Hosted
Dump some stats about the safepoint sampler into a file on this path. 
SamplingCollectboolfalseHosted
Perform profiling by sampling the AOT compiled code to collect data for profile-guided optimization.
SaveProfilesPathStringNoneRuntime
Path for saving compilation profiles. If the value is omitted the debug dump path will be used.
SaveProfilesboolfalseRuntime
Save per compilation profile information.
ScanObjectsParallelbooltrueRuntime
Object scanning in parallel.
ScheduledDuplicationSimulationboolfalseRuntime
Simulation can either only process fixed nodes or schedule the graph and also process floating nodes.
SerializationConfigurationFilesString*Hosted
One or several (comma-separated) paths to JSON files that specify lists of serialization configurations. [Extra help 
available]
SerializationConfigurationResourcesString*Hosted
Resources describing program elements to be made available for serialization (see SerializationConfigurationFiles).
SerializationDenyConfigurationFilesString*Hosted
One or several (comma-separated) paths to JSON files that specify lists of serialization configurations. [Extra help
available]
SerializationDenyConfigurationResourcesString*Hosted
Resources describing program elements that must not be made available for serialization.
ServiceLoaderFeatureExcludeServiceProvidersString*Hosted
Comma-separated list of service providers that should be excluded.
ServiceLoaderFeatureExcludeServicesString*Hosted
Comma-separated list of services that should be excluded.
SharedLibraryboolfalseHosted
Build shared library.
ShowConfigurationStringnoneRuntime
Writes to the VM log information about the compiler configuration selected. 
ShowDumpFilesboolfalseRuntime
Print the name of each dump file path as it's created.
ShowSubstitutionSourceInfoboolfalseRuntime
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.
SignalHandlerBasedExecutionSamplerboolfalseHosted
Determines if JFR uses a signal handler for execution sampling.
SimpleFastInflatedLockingbooltrueRuntime
Handle simple cases for inflated monitors in the fast-path.
SimulateClassInitializerCollectAllReasonsboolfalseHosted
Configuration for SimulateClassInitializer: Collect all reasons why a class initializer cannot be simulated.
SimulateClassInitializerMaxAllocatedBytesint40000Hosted
Configuration for SimulateClassInitializer: Maximum number of bytes allocated in the image heap for each class
initializer.
SimulateClassInitializerMaxInlineDepthint200Hosted
Configuration for SimulateClassInitializer: Maximum inlining depth during simulation.
SimulateClassInitializerMaxLoopIterationsint2000Hosted
Configuration for SimulateClassInitializer: Maximum number of loop iterations that are unrolled during simulation.
SimulateClassInitializerbooltrueHosted
Simulate the effects of class initializer at image build time, to avoid class initialization at run time.
SimulationBasedLoopPeelingbooltrueRuntime
Use DBDS algorithm to simulate the impact of peeling on a loop.
SimulationPruneUnlikelyBranchesbooltrueRuntime
Ignore low frequency branches during simulation.
SizeForIPEAFrequencyDecreaseint500Hosted
Size of the IR that forces a reduction in the number of IPEA runs made. 
SmallCompiledLowLevelGraphSizeint330Runtime
If the previous low-level graph size of the method exceeds the threshold, it is not inlined. 
SmallGraphDuplicationBudgetFactordouble1.0Runtime
See 'DuplicationBudgetFactor': for small graphs. 
SmallGraphSizeint2000Runtime
Node cost graph size for a graph to be considered 'small'. 
SmallRootIrPenaltyCoefficientdouble0.02Runtime
Reduces the likelihood of exploring call graphs with IR size much larger than the root. 
SnippetCountersboolfalseRuntime
Enable counters for various paths in snippets.
SoftRefLRUPolicyMSPerMBint1000Runtime
Number of milliseconds per MB of free space in the heap. G1 GC only. 
SourceLevelDebugFilterString*Hosted
Constrain debug info generation to the comma-separated list of package prefixes given to this option. 
SourceLevelDebugboolfalseHosted
Preserve the local variable information for every Java source line to allow line-by-line stepping in the debugger. Allow 
the lookup of Java-level method information, e.g., in stack traces.
SpawnIsolatesbooltrueHosted
Support multiple isolates.
SpectrePHTBarriersStringNoneRuntime
Select a strategy to mitigate speculative bounds check bypass (aka Spectre-PHT or Spectre V1). [Extra help available] 
SpectrePHTIndexMaskingboolfalseRuntime
Mask indices to scope access to allocation size after bounds check.
SpeculativeExecutionBarriersboolfalseRuntime
Stop speculative execution on all branch targets with execution barrier instructions.
SpeculativeGuardMovementbooltrueRuntime
Move loop invariant guards (e.g., array bounds checks) out of loops.
SpeculativeStoreCheckbooltrueRuntime
Speculates that arrays have exact type to optimize store checks.
StackOverflowCheckInProloguebooltrueHosted
Check for stack overflow in method prologue.
StackRedZoneSizeint8192Hosted
Size (in bytes) of the red zone reserved at the end of the stack. This stack space can only be used by critical VM code 
and C code, e.g., to report fatal errors.
StackSizeint0Runtime
The size of each thread stack at run-time, in bytes. 
StackTracebooltrueHosted
Deprecated, has no effect.
StackYellowZoneSizeint32768Hosted
Size (in bytes) of the yellow zone reserved at the end of the stack. This stack space is reserved for VM use and cannot 
be used by the application.
StartFlightRecording""Runtime
Start flight recording with options. 
StaticExecutableWithDynamicLibCboolfalseHosted
Builds a statically linked executable with libc dynamically linked.
StaticExecutableboolfalseHosted
Build statically linked executable (requires static libc and zlib).
StrengthenGraphWithConstantsbooltrueRuntime
Perform constant folding in StrengthenGraphs.
StressExplicitExceptionCodeboolfalseRuntime
Stress the code emitting explicit exception throwing code.
StressInvokeWithExceptionNodeboolfalseRuntime
Stress the code emitting invokes with explicit exception edges.
StressTestEarlyReadsboolfalseRuntime
Stress the code by emitting reads at earliest instead of latest point.
StrictConfigurationboolfalseHosted
When configuration files do not match their schema, abort the image build instead of emitting a warning.
StrictDeoptInsertionChecksboolfalseRuntime
Perform checks that guards and deopts aren't introduced in graphs that should handle exceptions explicitly.
StrictImageHeapboolfalseHosted
Enable the strict image heap mode that allows all classes to be used at build-time but also requires types of all 
objects in the heap to be explicitly marked for build-time initialization.
StrictProfilesbooltrueRuntime
Throw an error if an attempt is made to overwrite/update a profile loaded from disk.
StrictQueryCodeCompilationbooltrueHosted
Use strict checks when performing query code compilation.
StringIndexOfConstantLimitint4096Runtime
String.indexOf invocations will be evaluated at compile time if the receiver is a constant and its length is smaller 
than this value.
StripDebugInfobooltrueHosted
Use a separate file for debug info.
StripMineALotboolfalseRuntime
Force strip mining of all loops that can be strip mined.
StripMineCountedLoopsbooltrueRuntime
StripMineInvertedLoopsbooltrueRuntime
Strip mine inverted loops.
StripMineNonCountedLoopsbooltrueRuntime
SupportCompileInIsolatesbooltrueHosted
Support runtime compilation in separate isolates (enable at runtime with option CompileInIsolates). 
SupportJsrBytecodesbooltrueRuntime
SupportOSRWithLocksbooltrueRuntime
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.
SupportPredefinedClassesbooltrueHosted
Enable support for predefining additional classes.
SupportRecurringCallbackbooltrueHosted
Support a per-thread timer that is called at a specific interval.
SuppressStderrboolfalseHosted
Suppress console error output for unittests.
SuppressStdoutboolfalseHosted
Suppress console normal output for unittests.
SurvivorRatioint8Runtime
Ratio of eden/survivor space size. G1 GC only. 
SystemicCompilationFailureRateint1Runtime
Compilation failure rate indicating a systemic compilation problem that will issue a warning. The value is made absolute 
and clamped to produce P, a value between 0 and 100. Systemic failure is detected if the percent of failing
compilations in a sliding time window >= P. A negative value will cause the VM to exit after issuing the warning. Set
to 0 to disable systemic compilation problem detection.
TLABAllocationWeightint35Runtime
Allocation averaging weight. G1 GC only. 
TLABRefillWasteFractionint64Runtime
Maximum TLAB waste at a refill (internal fragmentation). G1 GC only. 
TLABSizeint0Runtime
Starting TLAB size (in bytes); zero means set ergonomically. G1 GC only. 
TLABWasteIncrementint4Runtime
Increment allowed waste at slow allocation. G1 GC only. 
TLABWasteTargetPercentint1Runtime
Percentage of Eden that can be wasted. G1 GC only. 
TargetPLABWastePctint10Runtime
Target wasted space in last buffer as percent of overall allocation. G1 GC only. 
TargetPlatform""Hosted
Selects native-image compilation target (in - format). Defaults to host's OS-architecture pair. 
TargetSurvivorRatioint50Runtime
Desired percentage of survivor space used after scavenge. G1 GC only. 
TearDownFailureNanosint0Runtime
The number of nanoseconds before tearing down an isolate gives a failure message. 0 implies no message. 
TearDownWarningNanosint0Runtime
The number of nanoseconds before and between which tearing down an isolate gives a warning message. 0 implies no 
warning.
TempDirectoryString*Hosted
Directory for temporary files generated during native image generation. If this option is specified, the temporary files 
are not deleted so that you can inspect them after native image generation.
ThrowLinkAtBuildTimeIOExceptionsboolfalseHosted
Instead of warning, throw IOExceptions for link-at-build-time resources at build time.
ThrowMissingRegistrationErrorsPathsString*Hosted
Trigger missing registration errors from all types in the given class or module-path entries. [Extra help available]
ThrowMissingRegistrationErrorsString*Hosted
Throw Native Image-specific errors when trying to access an element that has not been registered. [Extra help available] 
ThrowUnsafeOffsetErrorsbooltrueHosted
Throw unsafe operation offset errors.).
TimeStampProfilingboolfalseRuntime
Profile method execution time.
TimeStringNoneRuntime
Pattern for specifying scopes in which timing is enabled. See the Dump option for the pattern syntax. An empty value 
enables all timers unconditionally.
TimedDynamicCountersint-1Runtime
Turn on the benchmark counters, and displays the results every n milliseconds. 
TimersStringNoneRuntime
Comma separated names of timers that are enabled irrespective of the value for Time option. An empty value enables all 
timers unconditionally.
TraceAuxiliaryImageClassHistogramboolfalseRuntime
Enables detailed tracing of auxiliary image events.
TraceAuxiliaryImageReferenceTreeboolfalseRuntime
Enables detailed tracing of auxiliary image events.
TraceBytecodeParserLevelint0Runtime
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.
TraceClassInitializationString*Hosted
Comma-separated list of fully-qualified class names that class initialization is traced for. 
TraceCodeCacheboolfalseRuntime
Print logging information for runtime code cache modifications.
TraceDeoptimizationDetailsboolfalseRuntime
Print verbose logging information for every deoptimization.
TraceDeoptimizationboolfalseRuntime
Print logging information for every deoptimization.
TraceDuplicatedMethodsboolfalseRuntime
Trace duplicated methods.
TraceEscapeAnalysisboolfalseRuntime
TraceExceptionHandlerStubboolfalseRuntime
Trace execution of stub used to handle an exception thrown by a callee.
TraceHeapChunksboolfalseRuntime
Trace heap chunks during collections, if +VerboseGC. Serial GC only.
TraceInlineDuringParsingboolfalseRuntime
Traces inlining performed during bytecode parsing.
TraceInliningForStubsAndSnippetsboolfalseRuntime
Enable inlining decision tracing in stubs and snippets.
TraceInliningboolfalseRuntime
Enable tracing of inlining decisions.
TraceLIRGeneratorLevelint0Runtime
The trace level for the LIR generator. 
TraceLocalizationFeatureboolfalseHosted
When enabled, localization feature details are printed.
TraceLoggingFeatureboolfalseHosted
When enabled, logging feature details are printed.
TraceMonitorsMethodFilterStringNoneRuntime
Trace monitor operations in methods whose fully qualified name contains this substring.
TraceMonitorsTypeFilterStringNoneRuntime
Trace monitor operations on objects whose type contains this substring.
TraceNativeToolUsageboolfalseHosted
Trace all native tool invocations as part of image building.
TraceObjectInstantiationString*Hosted
Comma-separated list of fully-qualified class names that object instantiation is traced for. 
TraceParserPluginsboolfalseRuntime
Traces use of plugins during bytecode parsing.
TraceSecurityServicesboolfalseHosted
Enable tracing of security services automatic registration.
TraceUnwindStubboolfalseRuntime
Trace execution of the stub that routes an exception to a handler in the calling frame.
TraceVMOperationsboolfalseHosted
Trace VMOperation execution.
TrackAccessChainboolfalseRuntime
Track the callers for methods and accessing methods for fields.
TrackGraphSizesInDuplicationboolfalseRuntime
Enable (if Count is enabled) graph size tracking during every duplication iteration.
TrackIPEAStatisticsStringnoneRuntime
Track IPEA statistics in substratePriorityInliner. 
TrackInliningStatisticsStringnoneRuntime
Track inlining statistics (inlining duration, call tree size, compiler node counts, and the number of callsites). One 
of: none, interactive.
TrackInputFlowsboolfalseRuntime
Track the input for type flows.
TrackMemUseStringNoneRuntime
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.
TrackNodeInsertionboolfalseRuntime
Track source stack trace where a node was inserted into the graph.
TrackNodeSourcePositionboolfalseRuntime
Track the NodeSourcePosition.
TreatRuntimeCodeInfoReferencesAsWeakbooltrueHosted
Determines if references from runtime-compiled code to Java heap objects should be treated as strong or weak.
TrivialInliningSizeint10Runtime
Graphs with less than this number of nodes are trivial and therefore always inlined. 
TrivialLoopSizeLimitForPeelingdouble512.0Runtime
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.
TruffleCompilerConfigurationStringNoneRuntime
Select a compiler configuration for Truffle compilation (default: use Graal system compiler configuration).
TruffleHostInliningBaseBudgetint5000Runtime
Maximum budget for Truffle host inlining for runtime compiled methods. 
TruffleHostInliningByteCodeInterpreterBudgetint100000Runtime
Maximum budget for Truffle host inlining for runtime compiled methods with a BytecodeInterpreterSwitch annotation.
TruffleHostInliningMaxExplorationDepthint1000Runtime
Determines the maximum call depth for exploration during host inlining.
TruffleHostInliningMaxSubtreeInvokesint20Runtime
Maximum number of subtree invokes for a subtree to get inlined until it is considered too complex. 
TruffleHostInliningMinFrequencydouble0.001Runtime
Minimum relative frequency for calls to get inlined. Default 0.001 on HotSpot and no minimum frequency on SVM. 
TruffleHostInliningPrintExploredboolfalseRuntime
When logging is activated for this phase enables printing of only explored, but ultimately not inlined call trees.
TruffleHostInliningbooltrueRuntime
Whether Truffle host inlining is enabled.
TruffleImmutableFrameFieldsbooltrueRuntime
Whether Truffle should mark final frame fields as immutable.
TruffleTrustedNonNullCastbooltrueRuntime
Whether Truffle trusted non-null casts are enabled.
TruffleTrustedTypeCastbooltrueRuntime
Whether Truffle trusted type casts are enabled.
TrustFinalDefaultFieldsbooltrueRuntime
Determines whether to treat final fields with default values as constant.
TryExplodeOverPhisbooltrueRuntime
PullThroughPhiOptimization: Enable floating node duplication over multiple phi nodes at once.
TryPhiPhiPullsbooltrueRuntime
PullThroughPhiOptimization: Enable floating node duplication over phis where the target node has different phis as 
input.
TuneInlinerExplorationdouble0.0Runtime
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.
TypeCheckMaxHintsint2Runtime
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.5Runtime
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.
TypeFlowPrinterInRadiusint0Runtime
How many levels of inputs to print. A value of 0 prints only the target flow. 
TypeFlowPrinterOutRadiusint0Runtime
How many levels of outputs to print. A value of 0 prints only the target flow. 
TypeFlowSaturationCutoffint20Runtime
The maximum number of types recorded in a type flow. -1 indicates no limitation. 
TypicalCallGraphSizeint100Runtime
Denotes the call graph size that is considered medium size. 
TypicalGraphSizeInvokeBonusint70Runtime
The increase in estimated typical graph size after inlining, per each extra invoke. 
TypicalGraphSizeMaxint15000Runtime
The maximum in estimated inlined typical graph size. 
TypicalGraphSizeint3250Runtime
The typical graph size at which inlining pressure must start growing. 
UnlockExperimentalVMOptionsboolfalseHosted
Enable and disable normal processing of flags relating to experimental options.
UnresolvedIsErrorbooltrueRuntime
Report unresolved elements as errors.
UnrollEmptyLoopsboolfalseRuntime
Unroll empty loops.
UnrollInvertedLoopsbooltrueRuntime
Unroll inverted (tail counted) loops.
UnrollMaxIterationsint16Runtime
UnrollMultiEndLoopsbooltrueRuntime
Unroll loops with multiple loop ends.
UnrollMultiExitLoopsbooltrueRuntime
Unroll loops with multiple loop exits.
UnsafeAutomaticSubstitutionsLogLevelint1Hosted
Unsafe automatic substitutions logging level: Disabled=0, Basic=1, Info=2, Debug=3.). 
UnsafeOffsetWarningsAreFatalboolfalseHosted
Print unsafe operation offset warnings.).
UseApplicationCodeSourceLocationboolfalseHosted
Return the application path as the Class.getProtectionDomain().getCodeSource().getLocation() for all classes that have 
no explicit ProtectionDomain.
UseBranchesWithin32ByteBoundaryboolfalseRuntime
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.
UseCAPCacheboolfalseHosted
Indicate the C Annotation Processor to use previously cached native information when generating C Type information.
UseCalleeSavedRegistersbooltrueHosted
Use callee saved registers to reduce spilling for low-frequency calls to stubs (if callee saved registers are supported 
by the architecture).
UseCompilationStatisticsboolfalseRuntime
Enables CompilationStatistics.
UseCompressedReferenceShiftbooltrueHosted
Use bit-shifting to enlarge the address range with narrow references.
UseCompressedReferencesbooltrueHosted
Use compressed references (32-bit instead of 64-bit references to Java objects).
UseContainerSupportbooltrueHosted
Enable detection and runtime container configuration support.
UseDedicatedVMOperationThreadboolfalseHosted
Determines if VM operations should be executed in a dedicated thread.
UseDirectCallTrampolinesALotboolfalseHosted
Force many trampolines to be needed for inter-method calls. Normally trampolines are only used when a method destination 
is outside the range of a pc-relative branch instruction.
UseDynamicNumberOfGCThreadsbooltrueRuntime
Dynamically choose the number of threads up to a maximum of ParallelGCThreads that G1 will use for garbage collection 
work.
UseEpsilonGCboolfalseHosted
Use a no-op GC.
UseExceptionProbabilitybooltrueRuntime
UseExperimentalReachabilityAnalysisboolfalseRuntime
Use experimental Reachability Analysis instead of points-to.
UseG1GCboolfalseHosted
Determines if the G1 garbage collector should be used.
UseGraphCachebooltrueRuntime
Turn on graph caching.
UseIPEAbooltrueHosted
Use InterproceduralPartialEscapeAnalysisPhase in priorityInliner.
UseImagebuildDebugSectionsbooltrueHosted
Emit debuginfo debug.svm.imagebuild.* sections with detailed image-build options.
UseLibCStringNoneHosted
Selects the libc implementation to use. Available implementations: glibc, musl, bionic.
UseLoopEndFrequenciesboolfalseRuntime
Derive loop frequencies only from backedge frequencies instead of from loop exit frequencies.
UseLoopLimitChecksbooltrueRuntime
UseMethodChecksbooltrueHosted
Perform method-based checks during inlining.
UseMonitorFastPathbooltrueHosted
Use thin locking fast path in snippets.
UseNullRegionbooltrueHosted
Determines if a null region is present between the heap base and the image heap.
UseOldMethodHandleIntrinsicsboolfalseHosted
Force using legacy method handle intrinsics.
UsePartialEscapeSelectiveInliningboolfalseHosted
Use PartialEscapeSelectiveInliningPhase to give PartialEscape phase more opportunities.
UsePerfDatabooltrueRuntime
Flag to disable jvmstat instrumentation for performance testing.
UsePriorityInliningPEAbooltrueRuntime
Turn on partial escape analysis during inlining.
UsePriorityInliningbooltrueRuntime
Use priority-based inlining.
UseReachabilityMethodSummariesboolfalseRuntime
Use method summaries for Reachability Analysis.
UseRememberedSetbooltrueHosted
Determines if a remembered sets is used, which is necessary for collecting the young and old generation independently.
UseSerialGCbooltrueHosted
Use a serial GC.
UseServiceLoaderFeaturebooltrueHosted
Automatically register services for run-time lookup using ServiceLoader.
UseSnippetGraphCachebooltrueRuntime
Use a cache for snippet graphs.
UseSnippetTemplateCachebooltrueRuntime
Use a LRU cache for snippet templates.
UseStringInliningboolfalseHosted
Determines if the string inlining optimization should be used.
UseTLABbooltrueHosted
Use thread-local object allocation. G1 GC only.
UseThinLockingboolfalseHosted
Use thin locking to optimize monitor operations.
UseTrappingNullChecksbooltrueRuntime
Use traps for null checks instead of explicit null-checks.
UseTypeCheckHintsbooltrueRuntime
UsedEdenProportionThresholddouble0.75Runtime
Ratio of used bytes to total allocated bytes for eden space. Setting it to a smaller value will trade more triggered 
hinted GCs for less resident set size.
VTuneAbsoluteFilenamesbooltrueRuntime
Use absolute path for source-filenames in VTune events.
VTunePath""Hosted
Path to VTune installation (usually /opt/intel/oneapi/vtune/latest/ or /opt/intel/vtune_amplifier). 
VTuneRuntimeSourceDestDirStringNoneRuntime
Directory where Java source-files will be placed for the debugger.
VectorFoldMinIterationsint4Runtime
Only generate SIMD loops for vector folds expected to iterate at least this many times. 
VectorIntrinsicsbooltrueRuntime
Enable vectorized array copy intrinsics.
VectorPolynomialIntrinsicsboolfalseRuntime
Enable vectorized polynomial intrinsics.
VectorUnrollint1Runtime
Unroll vectorized loops. 
VectorizationbooltrueRuntime
Enable vectorization.
VectorizeAllocationbooltrueRuntime
Enable vectorized array initialization.
VectorizeConditionalbooltrueRuntime
Enable vectorization of conditional code.
VectorizeDeoptsbooltrueRuntime
Enable vectorization of loops with conditional deopts before writes.
VectorizeFoldShapedbooltrueRuntime
Enable vectorization of loops implementing a higher-order 'fold' function.
VectorizeGatherbooltrueRuntime
Enable vectorization of vector gather operations.
VectorizeHashesbooltrueRuntime
Enable vectorization of hashCode patterns.
VectorizeIntegerMinMaxbooltrueRuntime
Enable vectorization of integer min/max operations.
VectorizeLoopsbooltrueRuntime
Enable vectorization of loops.
VectorizeMapShapedbooltrueRuntime
Enable vectorization of loops implementing a higher-order 'map' function.
VectorizeNegativeStridebooltrueRuntime
Enable vectorization of loops with negative strides.
VectorizeReachabilityFencesbooltrueRuntime
Enable vectorization of loops with reachability fences.
VectorizeSIMDbooltrueRuntime
Enable detection of SIMD patterns.
VectorizeSafepointsbooltrueRuntime
Enable vectorization of loops with safepoints.
VectorizeSequencebooltrueRuntime
Enable vectorization of sequence values.
VerboseGCboolfalseRuntime
Print more information about the heap before and after each collection.
VerifyAfterGCboolfalseRuntime
Verify memory system after GC. G1 GC only.
VerifyBalancedMonitorsboolfalseRuntime
Emit extra code to dynamically check monitor operations are balanced.
VerifyBeforeGCboolfalseRuntime
Verify memory system before GC. G1 GC only.
VerifyDeoptimizationEntryPointsboolfalseHosted
Verify that all possible deoptimization entry points have been properly compiled and registered in the metadata.
VerifyDuplicationOperationsboolfalseRuntime
VerifyDuringGCboolfalseRuntime
Verify memory system during GC (between phases). G1 GC only.
VerifyGCStartAtint0Runtime
GC invoke count where +VerifyHeap kicks in. G1 GC only. 
VerifyGraalGraphEdgesboolfalseRuntime
Perform expensive verification of graph inputs, usages, successors and predecessors.
VerifyGraalGraphsbooltrueRuntime
Verify graphs often during compilation when assertions are turned on.
VerifyGraalPhasesSizeboolfalseRuntime
Verify before - after relation of the relative, computed, code size of a graph.
VerifyHeapAtReturnboolfalseRuntime
Perform platform dependent validation of the Java heap at returns.
VerifyHeapboolfalseHosted
Verify the heap before and after each collection.
VerifyKillCFGUnusedNodesboolfalseRuntime
Verify that there are no new unused nodes when performing killCFG.
VerifyLoopVectorizationboolfalseRuntime
Run expensive checks to verify the graph after loop vectorization.
VerifyNamingConventionsboolfalseHosted
Verify naming conventions during image construction.
VerifyPhasesboolfalseRuntime
VerifyReferencesPointIntoValidChunkboolfalseHosted
Verify that object references point into valid heap chunks if VerifyHeap is enabled. Serial GC only.
VerifyReferencesbooltrueHosted
Verify all object references if VerifyHeap is enabled. Serial GC only.
VerifyRememberedSetbooltrueHosted
Verify the remembered set if VerifyHeap is enabled. Serial GC only.
VerifyRememberedSetsboolfalseRuntime
Verify GC remembered sets. G1 GC only.
VerifyTypesboolfalseHosted
Verify type states computed by the static analysis at run time. This is useful when diagnosing problems in the static 
analysis, but reduces peak performance significantly.
VerifyWriteBarrierEliminationboolfalseRuntime
Add code to verify that eliminated barriers weren't needed.
VerifyWriteBarriersboolfalseHosted
Verify write barriers. Serial GC only.
VerifyStringNoneRuntime
Pattern for specifying scopes in which logging is enabled. See the Dump option for the pattern syntax.
Virtualize""Hosted
Build the native image for a virtualized environment. The argument is a path to a JSON file that specifies the 
virtualized environment properties.
WarnAboutCodeSignatureMismatchbooltrueRuntime
Print to stdout when a compilation performed with different profiles generates different backend code.
WarnAboutGraphSignatureMismatchbooltrueRuntime
Print to stdout when a compilation performed with different profiles generates different frontend IR.
WarnAboutMissingReflectionOrJNIMetadataElementsboolfalseHosted
Warn when reflection and JNI configuration files have elements that could not be found on the classpath or modulepath.
WarnAboutNotCachedLoadedAccessbooltrueRuntime
Print to stdout when requesting profiling info not present in a loaded profile.
WarnMissingIntrinsicboolfalseRuntime
Print a warning when a missing intrinsic is seen.
WriteSinkingExcludeFieldsStringNoneRuntime
Exclude certain fields from write sinking. Fields are specified with the same syntax as method filters, minus the 
signature part.
WriteableCodeCacheboolfalseRuntime
Allocate code cache with write access, allowing inlining of objects.
YoungPLABSizeint4096Runtime
Size of young gen promotion LAB's (in HeapWords). G1 GC only. 
ZapChunksboolfalseHosted
Fill unused memory chunks with a sentinel value. Serial and epsilon GC only.
ZapConsumedHeapChunksboolfalseHosted
After use, Fill memory chunks with a sentinel value. Serial and epsilon GC only.
ZapProducedHeapChunksboolfalseHosted
Before use, fill memory chunks with a sentinel value. Serial and epsilon GC only.
ZapStackOnMethodEntryboolfalseRuntime
ZeroTLABboolfalseRuntime
Zero out the newly created TLAB. G1 GC only. Default: - (disabled).