Wednesday, July 20, 2011

The most complete list of -XX options for Java JVM

There was a wonderful page with that list (, but it seems it's gone now and not available any more. Luckily there is which allows to make time flowing backwards and recover things which have passed away long time back. So, I have just get that page out of grave and copy/pasted here to return that bit of information back to life. Also I'm constantly doing updates to the original list, so by now it should be longer than it was initially.
  • product flags are always settable / visible
  • develop flags are settable / visible only during development and are constant in the PRODUCT version
  • notproduct flags are settable / visible only during development and are not declared in the PRODUCT version
  • diagnostic options not meant for VM tuning or for product modes. They are to be used for VM quality assurance or field diagnosis of VM bugs. They are hidden so that users will not be encouraged to try them as if they were VM ordinary execution options. However, they are available in the product version of the VM. Under instruction from support engineers, VM customers can turn them on to collect diagnostic information about VM problems. To use a VM diagnostic option, you must first specify +UnlockDiagnosticVMOptions. (This master switch also affects the behavior of -Xprintflags.)
  • manageable flags are writeable external product flags. They are dynamically writeable through the JDK management interface ( API) and also through JConsole. These flags are external exported interface (see CCC). The list of manageable flags can be queried programmatically through the management interface.
  • experimental experimental options which become available just after XX:+UnlockExperimentalVMOptions flag is set.
  • product_rw flags are writeable internal product flags. They are like "manageable" flags but for internal/private use. The list of product_rw flags are internal/private flags which may be changed/removed in a future release. It can be set through the management interface to get/set value when the name of flag is supplied.
  • product_pd
  • develop_pd
UseMembar(Unstable) Issues membars on thread state transitionsfalsebool
UnlockCommercialFeaturesEnables Oracle Java SE users to control when licensed features are allowed to run. Since Java SE 7 Update 4.falsebool
PrintCommandLineFlagsPrints flags that appeared on the command linefalsebool
UseGCLogFileRotationPrevent large gclog file for long running app. Requires -Xloggc:<filename>. Since Java7.falsebool
NumberOfGCLogFilesNumber of gclog files in rotation. Default: 0, no rotation. Only valid with UseGCLogFileRotation. Since Java7.0uintx
GCLogFileSizeGC log file size, Default: 0 bytes, no rotation. Only valid with UseGCLogFileRotation. Since Java7.0uintx
JavaMonitorsInStackTracePrint info. about Java monitor locks when the stacks are dumpedtruebool
LargePageSizeInBytesLarge page size (0 to let VM choose the page size0uintx
LargePageHeapSizeThresholdUse large pages if max heap is at least this big128*Muintx
ForceTimeHighResolutionUsing high time resolution(For Win32 only)falsebool
PrintVMQWaitTimePrints out the waiting time in VM operation queuefalsebool
PrintJNIResolvingUsed to implement -v:jnifalsebool
UseInlineCachesUse Inline Caches for virtual callstruebool
UseCompilerSafepointsStop at safepoints in compiled codetruebool
UseSplitVerifieruse split verifier with StackMapTable attributestruebool
FailOverToOldVerifierfail over to old verifier when split verifier failstruebool
SuspendRetryCountMaximum retry count for an external suspend request50intx
SuspendRetryDelayMilliseconds to delay per retry (* current_retry_count)5intx
UseSuspendResumeThreadListsEnable SuspendThreadList and ResumeThreadListtruebool
MaxFDLimitBump the number of file descriptors to max in solaris.truebool
BytecodeVerificationRemoteEnables the Java bytecode verifier for remote classestruebool
BytecodeVerificationLocalEnables the Java bytecode verifier for local classesfalsebool
PrintGCApplicationConcurrentTimePrint the time the application has been runningfalsebool
PrintGCApplicationStoppedTimePrint the time the application has been stoppedfalsebool
ShowMessageBoxOnErrorKeep process alive on VM fatal errorfalsebool
SuppressFatalErrorMessageDo NO Fatal Error report [Avoid deadlock]falsebool
OnErrorRun user-defined commands on fatal error; see VMError.cpp for examples""ccstr
OnOutOfMemoryErrorRun user-defined commands on first java.lang.OutOfMemoryError""ccstr
PrintCompilationPrint compilationsfalsebool
StackTraceInThrowableCollect backtrace in throwable when exception happenstruebool
OmitStackTraceInFastThrowOmit backtraces for some 'hot' exceptions in optimized codetruebool
ProfilerPrintByteCodeStatisticsPrints byte code statictics when dumping profiler outputfalsebool
ProfilerRecordPCCollects tick for each 16 byte interval of compiled codefalsebool
UseNUMAEnables NUMA support. See details herefalsebool
ProfileVMProfiles ticks that fall within VM (either in the VM Thread or VM code called through stubs)falsebool
ProfileIntervalsPrints profiles for each interval (see ProfileIntervalsTicks)falsebool
RegisterFinalizersAtInitRegister finalizable objects at end of Object. or after allocation.truebool
ClassUnloadingDo unloading of classestruebool
ConvertYieldToSleepConverts yield to a sleep of MinSleepInterval to simulate Win32 behavior (SOLARIS only)falsebool
UseBoundThreadsBind user level threads to kernel threads (for SOLARIS only)truebool
UseLWPSynchronizationUse LWP-based instead of libthread-based synchronization (SPARC only)truebool
SyncKnobs(Unstable) Various monitor synchronization tunables""ccstr
EmitSync(Unsafe,Unstable) Controls emission of inline sync fast-path code0intx
AlwaysInflate(Unstable) Force inflation0intx
Atomics(Unsafe,Unstable) Diagnostic - Controls emission of atomics0intx
EmitLFence(Unsafe,Unstable) Experimental0intx
AppendRatio(Unstable) Monitor queue fairness" ) product(intx, SyncFlags, 0,(Unsafe,Unstable) Experimental Sync flags" ) product(intx, SyncVerbose, 0,(Unstable)" ) product(intx, ClearFPUAtPark, 0,(Unsafe,Unstable)" ) product(intx, hashCode, 0, (Unstable) select hashCode generation algorithm" ) product(intx, WorkAroundNPTLTimedWaitHang, 1, (Unstable, Linux-specific)" avoid NPTL-FUTEX hang pthread_cond_timedwait" ) product(bool, FilterSpuriousWakeups , true, Prevent spurious or premature wakeups from object.wait" (Solaris only)11intx
AdjustConcurrencycall thr_setconcurrency at thread create time to avoid LWP starvation on MP systems (For Solaris Only)falsebool
ReduceSignalUsageReduce the use of OS signals in Java and/or the VMfalsebool
AllowUserSignalHandlersDo not complain if the application installs signal handlers (Solaris & Linux only)falsebool
UseSignalChainingUse signal-chaining to invoke signal handlers installed by the application (Solaris & Linux only)truebool
UseAltSigsUse alternate signals instead of SIGUSR1 & SIGUSR2 for VM internal signals. (Solaris only)falsebool
UseSpinningUse spinning in monitor inflation and before entryfalsebool
PreSpinYieldYield before inner spinning loopfalsebool
PostSpinYieldYield after inner spinning looptruebool
UsePopCountInstructionWhere possible replaces call to Integer.bitCount() with assembly instruction, i.e. POCCNT on Intel, POPC on Sparc, etctruebool
AllowJNIEnvProxyAllow JNIEnv proxies for jdbxfalsebool
JNIDetachReleasesMonitorsJNI DetachCurrentThread releases monitors owned by threadtruebool
RestoreMXCSROnJNICallsRestore MXCSR when returning from JNI callsfalsebool
CheckJNICallsVerify all arguments to JNI callsfalsebool
UseFastJNIAccessorsUse optimized versions of GetFieldtruebool
EagerXrunInitEagerly initialize -Xrun libraries; allows startup profiling, but not all -Xrun libraries may support the state of the VM at this timefalsebool
PreserveAllAnnotationsPreserve RuntimeInvisibleAnnotations as well as RuntimeVisibleAnnotationsfalsebool
LazyBootClassLoaderEnable/disable lazy opening of boot class path entriestruebool
UseBiasedLockingEnable biased locking in JVMtruebool
BiasedLockingStartupDelayNumber of milliseconds to wait before enabling biased locking4000intx
BiasedLockingBulkRebiasThresholdThreshold of number of revocations per type to try to rebias all objects in the heap of that type20intx
BiasedLockingBulkRevokeThresholdThreshold of number of revocations per type to permanently revoke biases of all objects in the heap of that type40intx
BiasedLockingDecayTimeDecay time (in milliseconds) to re-enable bulk rebiasing of a type after previous bulk rebias25000intx
TraceJVMTITrace flags for JVMTI functions and events""ccstr
StressLdcRewriteForce ldc -> ldc_w rewrite during RedefineClassesfalsebool
TraceRedefineClassesTrace level for JVMTI RedefineClasses0intx
VerifyMergedCPBytecodesVerify bytecodes after RedefineClasses constant pool mergingtruebool
HPILibPathSpecify alternate path to HPI library""ccstr
TraceClassResolutionTrace all constant pool resolutions (for debugging)falsebool
TraceBiasedLockingTrace biased locking in JVMfalsebool
TraceMonitorInflationTrace monitor inflation in JVMfalsebool
Use486InstrsOnlyUse 80486 Compliant instruction subsetfalsebool
UseSerialGCTells whether the VM should use serial garbage collectorfalsebool
UseParallelGCUse parallel garbage collection for scavenges. (Introduced in 1.4.1)truebool
UseParallelOldGCUse parallel garbage collection for the full collections. Enabling this option automatically sets -XX:+UseParallelGC. (Introduced in 5.0 update 6)'false' before Java 7 update 4 and 'true' after that versionbool
UseParallelOldGCCompactingIn the Parallel Old garbage collector use parallel compactiontruebool
UseParallelDensePrefixUpdateIn the Parallel Old garbage collector use parallel dense" prefix updatetruebool
HeapMaximumCompactionIntervalHow often should we maximally compact the heap (not allowing any dead space)20uintx
HeapFirstMaximumCompactionCountThe collection count for the first maximum compaction3uintx
UseMaximumCompactionOnSystemGCIn the Parallel Old garbage collector maximum compaction for a system GCtruebool
ParallelOldDeadWoodLimiterMeanThe mean used by the par compact dead wood" limiter (a number between 0-100).50uintx
ParallelOldDeadWoodLimiterStdDevThe standard deviation used by the par compact dead wood" limiter (a number between 0-100).80uintx
UseParallelOldGCDensePrefixUse a dense prefix with the Parallel Old garbage collectortruebool
ParallelGCThreadsNumber of parallel threads parallel gc will use0uintx
ParallelCMSThreadsMax number of threads CMS will use for concurrent work0uintx
YoungPLABSizeSize of young gen promotion labs (in HeapWords)4096uintx
OldPLABSizeSize of old gen promotion labs (in HeapWords).  See good explanation about that parameter here.1024uintx
GCTaskTimeStampEntriesNumber of time stamp entries per gc worker thread200uintx
AlwaysTenureAlways tenure objects in eden. (ParallelGC only)falsebool
NeverTenureNever tenure objects in eden, May tenure on overflow" (ParallelGC only)falsebool
ScavengeBeforeFullGCScavenge youngest generation before each full GC," used with UseParallelGCtruebool
UseCompressedOopsEnables object-reference compression capabilities via the Compressed References. Have sense just on 64bit JVM. See more details here.falsebool
UseConcMarkSweepGCUse Concurrent Mark-Sweep GC in the old generationfalsebool
ExplicitGCInvokesConcurrentA System.gc() request invokes a concurrent collection;" (effective only when UseConcMarkSweepGC)falsebool
UseCMSBestFitUse CMS best fit allocation strategytruebool
UseCMSCollectionPassingUse passing of collection from background to foregroundtruebool
UseParNewGCUse parallel threads in the new generation.falsebool
ParallelGCVerboseVerbose output for parallel GC.falsebool
ParallelGCBufferWastePctwasted fraction of parallel allocation buffer.10intx
ParallelGCRetainPLABRetain parallel allocation buffers across scavenges.truebool
TargetPLABWastePcttarget wasted space in last buffer as pct of overall allocation10intx
PLABWeightPercentage (0-100) used to weight the current sample when" computing exponentially decaying average for ResizePLAB.75uintx
ResizePLABDynamically resize (survivor space) promotion labstruebool
PrintPLABPrint (survivor space) promotion labs sizing decisionsfalsebool
ParGCArrayScanChunkScan a subset and push remainder, if array is bigger than this50intx
ParGCDesiredObjsFromOverflowListThe desired number of objects to claim from the overflow list20intx
CMSParPromoteBlocksToClaimNumber of blocks to attempt to claim when refilling CMS LAB for parallel GC.50uintx
AlwaysPreTouchIt forces all freshly committed pages to be pre-touched.falsebool
CMSUseOldDefaultsA flag temporarily introduced to allow reverting to some older" default settings; older as of 6.0falsebool
CMSYoungGenPerWorkerThe amount of young gen chosen by default per GC worker thread available16*Mintx
CMSIncrementalModeWhether CMS GC should operate in \"incremental\" modefalsebool
CMSIncrementalDutyCycleCMS incremental mode duty cycle (a percentage, 0-100). If" CMSIncrementalPacing is enabled, then this is just the initial" value10uintx
CMSIncrementalPacingWhether the CMS incremental mode duty cycle should be automatically adjustedtruebool
CMSIncrementalDutyCycleMinLower bound on the duty cycle when CMSIncrementalPacing is" enabled (a percentage, 0-100).0uintx
CMSIncrementalSafetyFactorPercentage (0-100) used to add conservatism when computing the" duty cycle.10uintx
CMSIncrementalOffsetPercentage (0-100) by which the CMS incremental mode duty cycle" is shifted to the right within the period between young GCs0uintx
CMSExpAvgFactorPercentage (0-100) used to weight the current sample when" computing exponential averages for CMS statistics.25uintx
CMS_FLSWeightPercentage (0-100) used to weight the current sample when" computing exponentially decating averages for CMS FLS statistics.50uintx
CMS_FLSPaddingThe multiple of deviation from mean to use for buffering" against volatility in free list demand.2uintx
FLSCoalescePolicyCMS: Aggression level for coalescing, increasing from 0 to 42uintx
CMS_SweepWeightPercentage (0-100) used to weight the current sample when" computing exponentially decaying average for inter-sweep duration.50uintx
CMS_SweepPaddingThe multiple of deviation from mean to use for buffering" against volatility in inter-sweep duration.2uintx
CMS_SweepTimerThresholdMillisSkip block flux-rate sampling for an epoch unless inter-sweep duration exceeds this threhold in milliseconds10uintx
CMSClassUnloadingEnabledWhether class unloading enabled when using CMS GCfalsebool
CMSCompactWhenClearAllSoftRefsCompact when asked to collect CMS gen with clear_all_soft_refstruebool
UseCMSCompactAtFullCollectionUse mark sweep compact at full collectionstruebool
CMSFullGCsBeforeCompactionNumber of CMS full collection done before compaction if > 00uintx
CMSIndexedFreeListReplenishReplenish and indexed free list with this number of chunks4uintx
CMSLoopWarnWarn in case of excessive CMS loopingfalsebool
CMSMarkStackSizeSize of CMS marking stack32*Kuintx
CMSMarkStackSizeMaxMax size of CMS marking stack4*Muintx
CMSMaxAbortablePrecleanLoops(Temporary, subject to experimentation)" Maximum number of abortable preclean iterations, if > 00uintx
CMSMaxAbortablePrecleanTime(Temporary, subject to experimentation)" Maximum time in abortable preclean in ms5000intx
CMSAbortablePrecleanMinWorkPerIteration(Temporary, subject to experimentation)" Nominal minimum work per abortable preclean iteration100uintx
CMSAbortablePrecleanWaitMillis(Temporary, subject to experimentation)" Time that we sleep between iterations when not given" enough work per iteration100intx
CMSRescanMultipleSize (in cards) of CMS parallel rescan task32uintx
CMSConcMarkMultipleSize (in cards) of CMS concurrent MT marking task32uintx
CMSRevisitStackSizeSize of CMS KlassKlass revisit stack1*Muintx
CMSAbortSemanticsWhether abort-on-overflow semantics is implementedfalsebool
CMSParallelRemarkEnabledWhether parallel remark enabled (only if ParNewGC)truebool
CMSParallelSurvivorRemarkEnabledWhether parallel remark of survivor space" enabled (effective only if CMSParallelRemarkEnabled)truebool
CMSPLABRecordAlwaysWhether to always record survivor space PLAB bdries" (effective only if CMSParallelSurvivorRemarkEnabled)truebool
CMSConcurrentMTEnabledWhether multi-threaded concurrent work enabled (if ParNewGC)truebool
CMSPermGenPrecleaningEnabledWhether concurrent precleaning enabled in perm gen" (effective only when CMSPrecleaningEnabled is true)truebool
CMSPermGenSweepingEnabledWhether sweeping of perm gen is enabledfalsebool
CMSPrecleaningEnabledWhether concurrent precleaning enabledtruebool
CMSPrecleanIterMaximum number of precleaning iteration passes3uintx
CMSPrecleanNumeratorCMSPrecleanNumerator:CMSPrecleanDenominator yields convergence" ratio2uintx
CMSPrecleanDenominatorCMSPrecleanNumerator:CMSPrecleanDenominator yields convergence" ratio3uintx
CMSPrecleanRefLists1Preclean ref lists during (initial) preclean phasetruebool
CMSPrecleanRefLists2Preclean ref lists during abortable preclean phasefalsebool
CMSPrecleanSurvivors1Preclean survivors during (initial) preclean phasefalsebool
CMSPrecleanSurvivors2Preclean survivors during abortable preclean phasetruebool
CMSPrecleanThresholdDon't re-iterate if #dirty cards less than this1000uintx
CMSCleanOnEnterClean-on-enter optimization for reducing number of dirty cardstruebool
CMSRemarkVerifyVariantChoose variant (1,2) of verification following remark1uintx
CMSScheduleRemarkEdenSizeThresholdIf Eden used is below this value, don't try to schedule remark2*Muintx
CMSScheduleRemarkEdenPenetrationThe Eden occupancy % at which to try and schedule remark pause50uintx
CMSScheduleRemarkSamplingRatioStart sampling Eden top at least before yg occupancy reaches" 1/ of the size at which we plan to schedule remark5uintx
CMSSamplingGrainThe minimum distance between eden samples for CMS (see above)16*Kuintx
CMSScavengeBeforeRemarkAttempt scavenge before the CMS remark stepfalsebool
CMSWorkQueueDrainThresholdDon't drain below this size per parallel worker/thief10uintx
CMSWaitDurationTime in milliseconds that CMS thread waits for young GC2000intx
CMSYieldYield between steps of concurrent mark & sweeptruebool
CMSBitMapYieldQuantumBitmap operations should process at most this many bits" between yields10*Muintx
BlockOffsetArrayUseUnallocatedBlockMaintain _unallocated_block in BlockOffsetArray" (currently applicable only to CMS collector)trueInDebugbool
RefDiscoveryPolicyWhether reference-based(0) or referent-based(1)0intx
ParallelRefProcEnabledEnable parallel reference processing whenever possiblefalsebool
CMSTriggerRatioPercentage of MinHeapFreeRatio in CMS generation that is allocated before a CMS collection cycle commences80intx
CMSBootstrapOccupancyPercentage CMS generation occupancy at which to initiate CMS collection for bootstrapping collection stats50intx
CMSInitiatingOccupancyFractionPercentage CMS generation occupancy to start a CMS collection cycle (A negative value means that CMSTirggerRatio is used). See good explanation about that parameter here.-1intx
UseCMSInitiatingOccupancyOnlyOnly use occupancy as a crierion for starting a CMS collection.  See good explanation about that parameter here.falsebool
HandlePromotionFailureThe youngest generation collection does not require" a guarantee of full promotion of all live objects.truebool
PreserveMarkStackSizeSize for stack used in promotion failure handling40uintx
ZeroTLABZero out the newly created TLABfalsebool
PrintTLABPrint various TLAB related informationfalsebool
TLABStatsPrint various TLAB related informationtruebool
AlwaysActAsServerClassMachineAlways act like a server-class machinefalsebool
DefaultMaxRAMMaximum real memory size for setting server class heap sizeGuintx
DefaultMaxRAMFractionFraction (1/n) of real memory used for server class max heap4uintx
DefaultInitialRAMFractionFraction (1/n) of real memory used for server class initial heap64uintx
UseAutoGCSelectPolicyUse automatic collection selection policyfalsebool
AutoGCSelectPauseMillisAutomatic GC selection pause threshhold in ms5000uintx
UseAdaptiveSizePolicyUse adaptive generation sizing policiestruebool
UsePSAdaptiveSurvivorSizePolicyUse adaptive survivor sizing policiestruebool
UseAdaptiveGenerationSizePolicyAtMinorCollectionUse adaptive young-old sizing policies at minor collectionstruebool
UseAdaptiveGenerationSizePolicyAtMajorCollectionUse adaptive young-old sizing policies at major collectionstruebool
UseAdaptiveSizePolicyWithSystemGCUse statistics from System.GC for adaptive size policyfalsebool
UseAdaptiveGCBoundaryAllow young-old boundary to movefalsebool
AdaptiveSizeThroughPutPolicyPolicy for changeing generation size for throughput goals0uintx
AdaptiveSizePausePolicyPolicy for changing generation size for pause goals0uintx
AdaptiveSizePolicyInitializingStepsNumber of steps where heuristics is used before data is used20uintx
AdaptiveSizePolicyOutputIntervalCollecton interval for printing information, zero => never0uintx
UseAdaptiveSizePolicyFootprintGoalUse adaptive minimum footprint as a goaltruebool
AdaptiveSizePolicyWeightWeight given to exponential resizing, between 0 and 10010uintx
AdaptiveTimeWeightWeight given to time in adaptive policy, between 0 and 10025uintx
PausePaddingHow much buffer to keep for pause time1uintx
PromotedPaddingHow much buffer to keep for promotion failure3uintx
SurvivorPaddingHow much buffer to keep for survivor overflow3uintx
AdaptivePermSizeWeightWeight for perm gen exponential resizing, between 0 and 10020uintx
PermGenPaddingHow much buffer to keep for perm gen sizing3uintx
ThresholdToleranceAllowed collection cost difference between generations10uintx
AdaptiveSizePolicyCollectionCostMarginIf collection costs are within margin, reduce both by full delta50uintx
YoungGenerationSizeIncrementAdaptive size percentage change in young generation20uintx
YoungGenerationSizeSupplementSupplement to YoungedGenerationSizeIncrement used at startup80uintx
YoungGenerationSizeSupplementDecayDecay factor to YoungedGenerationSizeSupplement8uintx
TenuredGenerationSizeIncrementAdaptive size percentage change in tenured generation20uintx
TenuredGenerationSizeSupplementSupplement to TenuredGenerationSizeIncrement used at startup80uintx
TenuredGenerationSizeSupplementDecayDecay factor to TenuredGenerationSizeIncrement2uintx
MaxGCPauseMillisAdaptive size policy maximum GC pause time goal in msecmax_uintxuintx
MaxGCMinorPauseMillisAdaptive size policy maximum GC minor pause time goal in msecmax_uintxuintx
GCTimeRatioAdaptive size policy application time to GC time ratio99uintx
AdaptiveSizeDecrementScaleFactorAdaptive size scale down factor for shrinking4uintx
UseAdaptiveSizeDecayMajorGCCostAdaptive size decays the major cost for long major intervalstruebool
AdaptiveSizeMajorGCDecayTimeScaleTime scale over which major costs decay10uintx
MinSurvivorRatioMinimum ratio of young generation/survivor space size3uintx
InitialSurvivorRatioInitial ratio of eden/survivor space size8uintx
BaseFootPrintEstimateEstimate of footprint other than Java Heap256*Muintx
UseGCOverheadLimitUse policy to limit of proportion of time spent in GC before an OutOfMemory error is throwntruebool
GCTimeLimitLimit of proportion of time spent in GC before an OutOfMemory" error is thrown (used with GCHeapFreeLimit)98uintx
GCHeapFreeLimitMinimum percentage of free space after a full GC before an OutOfMemoryError is thrown (used with GCTimeLimit)2uintx
PrintAdaptiveSizePolicyPrint information about AdaptiveSizePolicyfalsebool
DisableExplicitGCTells whether calling System.gc() does a full GCfalsebool
CollectGen0FirstCollect youngest generation before each full GCfalsebool
BindGCTaskThreadsToCPUsBind GCTaskThreads to CPUs if possiblefalsebool
UseGCTaskAffinityUse worker affinity when asking for GCTasksfalsebool
ProcessDistributionStrideStride through processors when distributing processes4uintx
CMSCoordinatorYieldSleepCountnumber of times the coordinator GC thread will sleep while yielding before giving up and resuming GC10uintx
CMSYieldSleepCountnumber of times a GC thread (minus the coordinator) will sleep while yielding before giving up and resuming GC0uintx
PrintGCTaskTimeStampsPrint timestamps for individual gc worker thread tasksfalsebool
TraceClassLoadingPreorderTrace all classes loaded in order referenced (not loaded)falsebool
TraceGen0TimeTrace accumulated time for Gen 0 collectionfalsebool
TraceGen1TimeTrace accumulated time for Gen 1 collectionfalsebool
PrintTenuringDistributionPrint tenuring age informationfalsebool
PrintHeapAtSIGBREAKPrint heap layout in response to SIGBREAKtruebool
TraceParallelOldGCTasksTrace multithreaded GC activityfalsebool
PrintParallelOldGCPhaseTimesPrint the time taken by each parallel old gc phase." PrintGCDetails must also be enabled.falsebool
CITimecollect timing information for compilationfalsebool
Inlineenable inliningtruebool
ClipInliningclip inlining if aggregate method exceeds DesiredMethodLimittruebool
UseTypeProfileCheck interpreter profile for historically monomorphic callstruebool
TypeProfileMinimumRatioMinimum ratio of profiled majority type to all minority types9intx
Tier1UpdateMethodDataUpdate methodDataOops in Tier1-generated codefalsebool
PrintVMOptionsprint VM flag settingstrueInDebugbool
ErrorFileIf an error occurs, save the error data to this file [default: ./hs_err_pid%p.log] (%p replaced with pid)""ccstr
DisplayVMOutputToStderrIf DisplayVMOutput is true, display all VM output to stderrfalsebool
DisplayVMOutputToStdoutIf DisplayVMOutput is true, display all VM output to stdoutfalsebool
UseHeavyMonitorsuse heavyweight instead of lightweight Java monitorsfalsebool
RangeCheckEliminationSplit loop iterations to eliminate range checkstruebool
SplitIfBlocksClone compares and control flow through merge points to fold some branchestruebool
AggressiveOptsEnable aggressive optimizations - see arguments.cppfalsebool
PrintInterpreterPrints the generated interpreter codefalsebool
UseInterpreterUse interpreter for non-compiled methodstruebool
UseNiagaraInstrsUse Niagara-efficient instruction subsetfalsebool
UseLoopCounterIncrement invocation counter on backward branchtruebool
UseFastEmptyMethodsUse fast method entry code for empty methodstruebool
UseFastAccessorMethodsUse fast method entry code for accessor methodstruebool
EnableJVMPIInstructionStartEventEnable JVMPI_EVENT_INSTRUCTION_START events - slows down interpretationfalsebool
JVMPICheckGCCompatibilityIf JVMPI is used, make sure that we are using a JVMPI-compatible garbage collectortruebool
ProfileMaturityPercentagenumber of method invocations/branches (expressed as % of CompileThreshold) before using the method's profile20intx
UseCompileruse compilationtruebool
UseCounterDecayadjust recompilation counterstruebool
AlwaysCompileLoopMethodswhen using recompilation, never interpret methods containing loopsfalsebool
DontCompileHugeMethodsdon't compile methods > HugeMethodLimittruebool
EstimateArgEscapeAnalyze bytecodes to estimate escape state of argumentstruebool
BCEATraceLevelHow much tracing to do of bytecode escape analysis estimates0intx
MaxBCEAEstimateLevelMaximum number of nested calls that are analyzed by BC EA.5intx
MaxBCEAEstimateSizeMaximum bytecode size of a method to be analyzed by BC EA.150intx
SelfDestructTimerWill cause VM to terminate after a given time (in minutes) (0 means off)0intx
MaxJavaStackTraceDepth Max. no. of lines in the stack trace for Java exceptions (0 means all).
With Java > 1.6, value 0 really means 0. value -1 or any negative number must be specified to print all the stack (tested with 1.6.0_22, 1.7.0 on Windows).
With Java <= 1.5, value 0 means everything, JVM chokes on negative number (tested with 1.5.0_22 on Windows).
NmethodSweepFractionNumber of invocations of sweeper to cover all nmethods4intx
MaxInlineSizemaximum bytecode size of a method to be inlined35intx
ProfileIntervalsTicks# of ticks between printing of interval profile (+ProfileIntervals)100intx
EventLogLengthmaximum nof events in event log2000intx
PerMethodRecompilationCutoffAfter recompiling N times, stay in the interpreter (-1=>'Inf')400intx
PerBytecodeRecompilationCutoffPer-BCI limit on repeated recompilation (-1=>'Inf')100intx
PerMethodTrapLimitLimit on traps (of one kind) in a method (includes inlines)100intx
PerBytecodeTrapLimitLimit on traps (of one kind) at a particular BCI4intx
AliasLevel0 for no aliasing, 1 for oop/field/static/array split, 2 for best2intx
ReadSpinIterationsNumber of read attempts before a yield (spin inner loop)100intx
PreBlockSpinNumber of times to spin in an inflated lock before going to an OS lock10intx
MaxHeapSizeDefault maximum size for object heap (in bytes)ScaleForWordSize (64*M)uintx
MaxNewSizeMaximum size of new generation (in bytes)max_uintxuintx
PretenureSizeThresholdMax size in bytes of objects allocated in DefNew generation0uintx
MinTLABSizeMinimum allowed TLAB size (in bytes)2*Kuintx
TLABAllocationWeightAllocation averaging weight35uintx
TLABWasteTargetPercentPercentage of Eden that can be wasted1uintx
TLABRefillWasteFractionMax TLAB waste at a refill (internal fragmentation)64uintx
TLABWasteIncrementIncrement allowed waste at slow allocation4uintx
MaxLiveObjectEvacuationRatioMax percent of eden objects that will be live at scavenge100uintx
OldSizeDefault size of tenured generation (in bytes)ScaleForWordSize (4096*K)uintx
MinHeapFreeRatioMin percentage of heap free after GC to avoid expansion40uintx
MaxHeapFreeRatioMax percentage of heap free after GC to avoid shrinking70uintx
SoftRefLRUPolicyMSPerMBNumber of milliseconds per MB of free space in the heap1000intx
MinHeapDeltaBytesMin change in heap space due to GC (in bytes)ScaleForWordSize (128*K)uintx
MinPermHeapExpansionMin expansion of permanent heap (in bytes)ScaleForWordSize (256*K)uintx
MaxPermHeapExpansionMax expansion of permanent heap without full GC (in bytes)ScaleForWordSize (4*M)uintx
QueuedAllocationWarningCountNumber of times an allocation that queues behind a GC will retry before printing a warning0intx
MaxTenuringThresholdMaximum value for tenuring threshold. See more info about that flag here.15intx
InitialTenuringThresholdInitial value for tenuring threshold7intx
TargetSurvivorRatioDesired percentage of survivor space used after scavenge50intx
MarkSweepDeadRatioPercentage (0-100) of the old gen allowed as dead wood. "Serial mark sweep treats this as both the min and max value." CMS uses this value only if it falls back to mark sweep." Par compact uses a variable scale based on the density of the" generation and treats this as the max value when the heap is" either completely full or completely empty. Par compact also" has a smaller default value; see arguments.cpp.5intx
PermMarkSweepDeadRatioPercentage (0-100) of the perm gen allowed as dead wood." See MarkSweepDeadRatio for collector-specific comments.20intx
MarkSweepAlwaysCompactCountHow often should we fully compact the heap (ignoring the dead space parameters)4intx
PrintCMSStatisticsStatistics for CMS0intx
PrintCMSInitiationStatisticsStatistics for initiating a CMS collectionfalsebool
PrintFLSStatisticsStatistics for CMS' FreeListSpace0intx
PrintFLSCensusCensus for CMS' FreeListSpace0intx
DeferThrSuspendLoopCount(Unstable) Number of times to iterate in safepoint loop before blocking VM threads4000intx
DeferPollingPageLoopCount(Unsafe,Unstable) Number of iterations in safepoint loop before changing safepoint polling page to RO-1intx
UseDepthFirstScavengeOrdertrue: the scavenge order will be depth-first, false: the scavenge order will be breadth-firsttruebool
GCDrainStackTargetSizehow many entries we'll try to leave on the stack during parallel GC64uintx
ThreadSafetyMarginThread safety margin is used on fixed-stack LinuxThreads (on Linux/x86 only) to prevent heap-stack collision. Set to 0 to disable this feature50*Muintx
CodeCacheMinimumFreeSpaceWhen less than X space left, we stop compiling.500*Kuintx
CompileOnlyList of methods (pkg/ to restrict compilation to""ccstr
CompileCommandFileRead compiler commands from this file [.hotspot_compiler]""ccstr
CompileCommandPrepend to .hotspot_compiler; e.g. log,java/lang/String.""ccstr
CICompilerCountPerCPU1 compiler thread for log(N CPUs)falsebool
UseThreadPrioritiesUse native thread prioritiestruebool
ThreadPriorityPolicy0 : Normal. VM chooses priorities that are appropriate for normal applications. On Solaris NORM_PRIORITY and above are mapped to normal native priority. Java priorities below NORM_PRIORITY" map to lower native priority values. On Windows applications" are allowed to use higher native priorities. However, with ThreadPriorityPolicy=0, VM will not use the highest possible" native priority, THREAD_PRIORITY_TIME_CRITICAL, as it may interfere with system threads. On Linux thread priorities are ignored because the OS does not support static priority in SCHED_OTHER scheduling class which is the only choice for" non-root, non-realtime applications. 1 : Aggressive. Java thread priorities map over to the entire range of native thread priorities. Higher Java thread priorities map to higher native thread priorities. This policy should be used with care, as sometimes it can cause performance degradation in the application and/or the entire system. On Linux this policy requires root privilege.0intx
ThreadPriorityVerboseprint priority changesfalsebool
DefaultThreadPrioritywhat native priority threads run at if not specified elsewhere (-1 means no change)-1intx
CompilerThreadPrioritywhat priority should compiler threads run at (-1 means no change)-1intx
VMThreadPrioritywhat priority should VM threads run at (-1 means no change)-1intx
CompilerThreadHintNoPreempt(Solaris only) Give compiler threads an extra quantatruebool
VMThreadHintNoPreempt(Solaris only) Give VM thread an extra quantafalsebool
JavaPriority1_To_OSPriorityMap Java priorities to OS priorities-1intx
JavaPriority2_To_OSPriorityMap Java priorities to OS priorities-1intx
JavaPriority3_To_OSPriorityMap Java priorities to OS priorities-1intx
JavaPriority4_To_OSPriorityMap Java priorities to OS priorities-1intx
JavaPriority5_To_OSPriorityMap Java priorities to OS priorities-1intx
JavaPriority6_To_OSPriorityMap Java priorities to OS priorities-1intx
JavaPriority7_To_OSPriorityMap Java priorities to OS priorities-1intx
JavaPriority8_To_OSPriorityMap Java priorities to OS priorities-1intx
JavaPriority9_To_OSPriorityMap Java priorities to OS priorities-1intx
JavaPriority10_To_OSPriorityMap Java priorities to OS priorities-1intx
StarvationMonitorIntervalPause between each check in ms200intx
Tier1BytecodeLimitMust have at least this many bytecodes before tier1" invocation counters are used10intx
StressTieredRuntimeAlternate client and server compiler on compile requestsfalsebool
InterpreterProfilePercentagenumber of method invocations/branches (expressed as % of CompileThreshold) before profiling in the interpreter33intx
MaxDirectMemorySizeMaximum total size of NIO direct-buffer allocations-1intx
UseUnsupportedDeprecatedJVMPIFlag to temporarily re-enable the, soon to be removed, experimental interface JVMPI.falsebool
UsePerfDataFlag to disable jvmstat instrumentation for performance testing" and problem isolation purposes.truebool
PerfDataSaveToFileSave PerfData memory to hsperfdata_ file on exitfalsebool
PerfDataSamplingIntervalData sampling interval in milliseconds50 /*ms*/intx
PerfDisableSharedMemStore performance data in standard memoryfalsebool
PerfDataMemorySizeSize of performance data memory region. Will be rounded up to a multiple of the native os page size.32*Kintx
PerfMaxStringConstLengthMaximum PerfStringConstant string length before truncation1024intx
PerfAllowAtExitRegistrationAllow registration of atexit() methodsfalsebool
PerfBypassFileSystemCheckBypass Win32 file system criteria checks (Windows Only)falsebool
UnguardOnExecutionViolationUnguard page and retry on no-execute fault (Win32 only)" 0=off, 1=conservative, 2=aggressive0intx
ManagementServerCreate JMX Management Serverfalsebool
DisableAttachMechanismDisable mechanism that allows tools to attach to this VMfalsebool
StartAttachListenerAlways start Attach Listener at VM startupfalsebool
UseSharedSpacesUse shared spaces in the permanent generationtruebool
RequireSharedSpacesRequire shared spaces in the permanent generationfalsebool
ForceSharedSpacesRequire shared spaces in the permanent generationfalsebool
DumpSharedSpacesSpecial mode: JVM reads a class list, loads classes, builds shared spaces, and dumps the shared spaces to a file to be used in future JVM runs.falsebool
PrintSharedSpacesPrint usage of shared spacesfalsebool
SharedDummyBlockSizeSize of dummy block used to shift heap addresses (in bytes)512*Muintx
SharedReadWriteSizeSize of read-write space in permanent generation (in bytes)12*Muintx
SharedReadOnlySizeSize of read-only space in permanent generation (in bytes)8*Muintx
SharedMiscDataSizeSize of the shared data area adjacent to the heap (in bytes)4*Muintx
SharedMiscCodeSizeSize of the shared code area adjacent to the heap (in bytes)4*Muintx
TaggedStackInterpreterInsert tags in interpreter execution stack for oopmap generaionfalsebool
ExtendedDTraceProbesEnable performance-impacting dtrace probesfalsebool
DTraceMethodProbesEnable dtrace probes for method-entry and method-exitfalsebool
DTraceAllocProbesEnable dtrace probes for object allocationfalsebool
DTraceMonitorProbesEnable dtrace probes for monitor eventsfalsebool
RelaxAccessControlCheckRelax the access control checks in the verifierfalsebool
UseVMInterruptibleIO(Unstable, Solaris-specific) Thread interrupt before or with EINTR for I/O operations results in OS_INTRPTtruebool
AggressiveHeapThe option inspects the server resources (size of memory and number of processors), and attempts to set various parameters to be optimal for long-running, memory allocation-intensive jobs. The JVM team view AggressiveHeap as an anachronism and would like to see it go away. Instead, we'd prefer for you to determine which of the individual options that AggressiveHeap sets actually impact your app, and then set those on the command line directly. You can check the Open JDK source code to see what AggressiveHeap actually does (arguments.cpp)falsebool
UseCompressedStringsUse a byte[] for Strings which can be represented as pure ASCII. (Introduced in Java 6 Update 21 Performance Release)falsebool
OptimizeStringConcatOptimize String concatenation operations where possible. (Introduced in Java 6 Update 20)falsebool
UseStringCacheEnables caching of commonly allocated strings.falsebool
G1HeapRegionSizeWith G1 the Java heap is subdivided into uniformly sized regions. This sets the size of the individual sub-divisions. The default value of this parameter is determined ergonomically based upon heap size. The minimum value is 1Mb and the maximum value is 32Mb. Introduced in Java 6 Update 26.8m
G1ReservePercentSets the amount of heap that is reserved as a false ceiling to reduce the possibility of promotion failure. Introduced in Java 6 Update 26.10
G1ConfidencePercentConfidence coefficient for G1 pause prediction. Introduced in Java 6 Update 26.50
PrintPromotionFailurePrints additional information on GC promotion failures.bool
HeapDumpOnOutOfMemoryErrorDump heap to file when java.lang.OutOfMemoryError is thrownfalsebool
HeapDumpPathWhen HeapDumpOnOutOfMemoryError is on, the path (filename or" directory) of the dump file (defaults to java_pid.hprof" in the working directory)""ccstr
PrintGCPrint message at garbage collectfalsebool
PrintGCDetailsPrint more details at garbage collectfalsebool
PrintGCTimeStampsPrint timestamps at garbage collectfalsebool
PrintGCDateStampsPrint datestamps (ISO_8601, e.g. 2013-10-18T12:32:01.657+0100) at garbage collect. Since Java 1.6.u4.falsebool
PrintClassHistogramPrint a histogram of class instancesfalsebool
PrintConcurrentLocksPrint java.util.concurrent locks in thread dumpfalsebool
UnlockExperimentalVMOptionsUnlocks experimental options.falsebool
UseG1GCSwitch on G1 for Java6. G1 is default for Java7, so there is no such option there.falsebool
TraceClassLoadingTrace all classes loadedfalsebool
TraceClassUnloadingTrace unloading of classesfalsebool
TraceLoaderConstraintsTrace loader constraintsfalsebool
PrintHeapAtGCPrint heap layout before and after each GCfalsebool
TraceItablesTrace initialization and use of itablesfalsebool
TracePcPatchingTrace usage of frame::patch_pcfalsebool
TraceJumpsTrace assembly jumps in thread ring bufferfalsebool
TraceRelocatorTrace the bytecode relocatorfalsebool
TraceLongCompilesPrint out every time compilation is longer than a given threasholdfalsebool
SafepointALotGenerates a lot of safepoints. Works with GuaranteedSafepointIntervalfalsebool
BailoutToInterpreterForThrowsCompiled methods which throws/catches exceptions will be deopt and intp.falsebool
NoYieldsInMicrolockDisable yields in microlockfalsebool
TraceOopMapGenerationShows oopmap generationfalsebool
MethodFlushingReclamation of zombie and not-entrant methodstruebool
VerifyStackVerify stack of each thread when it is entering a runtime callfalsebool
TraceDerivedPointersTrace traversal of derived pointers on stackfalsebool
InlineArrayCopyinline arraycopy native that is known to be part of base library DLLtruebool
InlineObjectHashinline Object::hashCode() native that is known to be part of base library DLLtruebool
InlineNativesinline natives that are known to be part of base library DLLtruebool
InlineMathNativesinline SinD, CosD, etc.truebool
InlineClassNativesinline Class.isInstance, etctruebool
InlineAtomicLonginline sun.misc.AtomicLongtruebool
InlineThreadNativesinline Thread.currentThread, etctruebool
InlineReflectionGetCallerClassinline sun.reflect.Reflection.getCallerClass(), known to be part of base library DLLtruebool
InlineUnsafeOpsinline memory ops (native methods) from sun.misc.Unsafetruebool
ConvertCmpD2CmpFConvert cmpD to cmpF when one input is constant in float rangetruebool
ConvertFloat2IntClippingConvert float2int clipping idiom to integer clippingtruebool
SpecialStringCompareTospecial version of string compareTotruebool
SpecialStringIndexOfspecial version of string indexOftruebool
TraceCallFixuptraces all call fixupsfalsebool
DeoptimizeALotdeoptimize at every exit from the runtime systemfalsebool
DeoptimizeOnlyAta comma separated list of bcis to deoptimize at""ccstr
Debuggingset when executing debug methods in debug.ccp (to prevent triggering assertions)falsebool
TraceHandleAllocationPrints out warnings when suspicious many handles are allocatedfalsebool
ShowSafepointMsgsShow msg. about safepoint synch.falsebool
SafepointTimeoutTime out and warn or fail after SafepointTimeoutDelay milliseconds if failed to reach safepointfalsebool
DieOnSafepointTimeoutDie upon failure to reach safepoint (see SafepointTimeout)falsebool
ForceFloatExceptionsForce exceptions on FP stack under/overflowtrueInDebugbool
SoftMatchFailureIf the DFA fails to match a node, print a message and bail outtrueInProductbool
VerifyStackAtCallsVerify that the stack pointer is unchanged after callsfalsebool
TraceJavaAssertionsTrace java language assertionsfalsebool
ZapDeadCompiledLocalsZap dead locals in compiler framesfalsebool
UseMallocOnlyuse only malloc/free for allocation (no resource area/arena)falsebool
PrintMallocprint all malloc/free callsfalsebool
ZapResourceAreaZap freed resource/arena space with 0xABABABABtrueInDebugbool
ZapJNIHandleAreaZap freed JNI handle space with 0xFEFEFEFEtrueInDebugbool
ZapUnusedHeapAreaZap unused heap space with 0xBAADBABEtrueInDebugbool
PrintVMMessagesPrint vm messages on consoletruebool
VerbosePrints additional debugging information from other modesfalsebool
PrintMiscellaneousPrints uncategorized debugging information (requires +Verbose)falsebool
WizardModePrints much more debugging informationfalsebool
SegmentedHeapDumpThresholdGenerate a segmented heap dump (JAVA PROFILE 1.0.2 format) when the heap usage is larger than this2*Guintx
HeapDumpSegmentSizeApproximate segment size when generating a segmented heap dump1*Guintx
BreakAtWarningExecute breakpoint upon encountering VM warningfalsebool
TraceVMOperationTrace vm operationsfalsebool
UseFakeTimersTells whether the VM should use system time or a fake timerfalsebool
PrintAssemblyPrint assembly code. Requires disassembler plugin, see details here.falsebool
PrintNMethodsPrint assembly code for nmethods when generatedfalsebool
PrintNativeNMethodsPrint assembly code for native nmethods when generatedfalsebool
PrintDebugInfoPrint debug information for all nmethods when generatedfalsebool
PrintRelocationsPrint relocation information for all nmethods when generatedfalsebool
PrintDependenciesPrint dependency information for all nmethods when generatedfalsebool
PrintExceptionHandlersPrint exception handler tables for all nmethods when generatedfalsebool
InterceptOSExceptionStarts debugger when an implicit OS (e.g., NULL) exception happensfalsebool
PrintCodeCache2Print detailed info on the compiled_code cache when exitingfalsebool
PrintStubCodePrint generated stub codefalsebool
PrintJVMWarningsPrints warnings for unimplemented JVM functionsfalsebool
InitializeJavaLangSystemInitialize java.lang.System - turn off for individual method debuggingtruebool
InitializeJavaLangStringInitialize java.lang.String - turn off for individual method debuggingtruebool
InitializeJavaLangExceptionsErrorsInitialize various error and exception classes - turn off for individual method debuggingtruebool
RegisterReferencesTells whether the VM should register soft/weak/final/phantom referencestruebool
IgnoreRewritesSupress rewrites of bytecodes in the oopmap generator. This is unsafe!falsebool
PrintCodeCacheExtensionPrint extension of code cachefalsebool
UsePrivilegedStackEnable the security JVM functionstruebool
IEEEPrecisionEnables IEEE precision (for INTEL only)truebool
ProtectionDomainVerificationVerifies protection domain before resolution in system dictionarytruebool
DisableStartThreadDisable starting of additional Java threads (for debugging only)falsebool
MemProfilingWrite memory usage profiling to log filefalsebool
UseDetachedThreadsUse detached threads that are recycled upon termination (for SOLARIS only)truebool
UsePthreadsUse pthread-based instead of libthread-based synchronization (SPARC only)falsebool
UpdateHotSpotCompilerFileOnErrorShould the system attempt to update the compiler file when an error occurs?truebool
LoadLineNumberTablesTells whether the class file parser loads line number tablestruebool
LoadLocalVariableTablesTells whether the class file parser loads local variable tablestruebool
LoadLocalVariableTypeTablesTells whether the class file parser loads local variable type tablestruebool
PreallocatedOutOfMemoryErrorCountNumber of OutOfMemoryErrors preallocated with backtrace4uintx
PrintBiasedLockingStatisticsPrint statistics of biased locking in JVMfalsebool
TraceJVMPITrace JVMPIfalsebool
TraceJNICallsTrace JNI callsfalsebool
TraceJNIHandleAllocationTrace allocation/deallocation of JNI handle blocksfalsebool
TraceThreadEventsTrace all thread eventsfalsebool
TraceBytecodesTrace bytecode executionfalsebool
TraceClassInitializationTrace class initializationfalsebool
TraceExceptionsTrace exceptionsfalsebool
TraceICsTrace inline cache changesfalsebool
TraceInlineCacheClearingTrace clearing of inline caches in nmethodsfalsebool
TraceDependenciesTrace dependenciesfalsebool
VerifyDependenciesExercise and verify the compilation dependency mechanismtrueInDebugbool
TraceNewOopMapGenerationTrace OopMapGenerationfalsebool
TraceNewOopMapGenerationDetailedTrace OopMapGeneration: print detailed cell statesfalsebool
TimeOopMapTime calls to GenerateOopMap::compute_map() in sumfalsebool
TimeOopMap2Time calls to GenerateOopMap::compute_map() individuallyfalsebool
TraceMonitorMismatchTrace monitor matching failures during OopMapGenerationfalsebool
TraceOopMapRewritesTrace rewritting of method oops during oop map generationfalsebool
TraceSafepointTrace safepoint operationsfalsebool
TraceICBufferTrace usage of IC bufferfalsebool
TraceCompiledICTrace changes of compiled ICfalsebool
TraceStartupTimeTrace setup timefalsebool
TraceHPITrace Host Porting Interface (HPI)falsebool
TraceProtectionDomainVerificationTrace protection domain verifcationfalsebool
TraceClearedExceptionsPrints when an exception is forcibly clearedfalsebool
UseParallelOldGCChunkPointerCalcIn the Parallel Old garbage collector use chucks to calculate" new object locationstruebool
VerifyParallelOldWithMarkSweepUse the MarkSweep code to verify phases of Parallel Oldfalsebool
VerifyParallelOldWithMarkSweepIntervalInterval at which the MarkSweep code is used to verify phases of Parallel Old1uintx
ParallelOldMTUnsafeMarkBitMapUse the Parallel Old MT unsafe in marking the bitmapfalsebool
ParallelOldMTUnsafeUpdateLiveDataUse the Parallel Old MT unsafe in update of live sizefalsebool
TraceChunkTasksQueuingTrace the queuing of the chunk tasksfalsebool
ScavengeWithObjectsInToSpaceAllow scavenges to occur when to_space contains objects.falsebool
UseCMSAdaptiveFreeListsUse Adaptive Free Lists in the CMS generationtruebool
UseAsyncConcMarkSweepGCUse Asynchronous Concurrent Mark-Sweep GC in the old generationtruebool
RotateCMSCollectionTypesRotate the CMS collections among concurrent and STWfalsebool
CMSTraceIncrementalModeTrace CMS incremental modefalsebool
CMSTraceIncrementalPacingTrace CMS incremental mode pacing computationfalsebool
CMSTraceThreadStateTrace the CMS thread state (enable the trace_state() method)falsebool
CMSDictionaryChoiceUse BinaryTreeDictionary as default in the CMS generation0intx
CMSOverflowEarlyRestorationWhether preserved marks should be restored earlyfalsebool
CMSTraceSweeperTrace some actions of the CMS sweeperfalsebool
FLSVerifyDictionaryDo lots of (expensive) FLS dictionary verificationfalsebool
VerifyBlockOffsetArrayDo (expensive!) block offset array verificationfalsebool
TraceCMSStateTrace the state of the CMS collectionfalsebool
CMSTestInFreeListCheck if the coalesced range is already in the free lists as claimed.falsebool
CMSIgnoreResurrectionIgnore object resurrection during the verification.truebool
FullGCALotForce full gc at every Nth exit from the runtime system (N=FullGCALotInterval)falsebool
PromotionFailureALotCountNumber of promotion failures occurring at ParGCAllocBuffer" refill attempts (ParNew) or promotion attempts (other young collectors)1000uintx
PromotionFailureALotIntervalTotal collections between promotion failures alot5uintx
WorkStealingSleepMillisSleep time when sleep is used for yields1intx
WorkStealingYieldsBeforeSleepNumber of yields before a sleep is done during workstealing1000uintx
TraceAdaptiveGCBoundaryTrace young-old boundary movesfalsebool
PSAdaptiveSizePolicyResizeVirtualSpaceAlotResize the virtual spaces of the young or old generations-1intx
PSAdjustTenuredGenForMinorPauseAdjust tenured generation to achive a minor pause goalfalsebool
PSAdjustYoungGenForMajorPauseAdjust young generation to achive a major pause goalfalsebool
AdaptiveSizePolicyReadyThresholdNumber of collections before the adaptive sizing is started5uintx
AdaptiveSizePolicyGCTimeLimitThresholdNumber of consecutive collections before gc time limit fires5uintx
UsePrefetchQueueUse the prefetch queue during PS promotiontruebool
ConcGCYieldTimeoutIf non-zero, assert that GC threads yield within this # of ms.0intx
TraceReferenceGCTrace handling of soft/weak/final/phantom referencesfalsebool
TraceFinalizerRegistrationTrace registration of final referencesfalsebool
TraceWorkGangTrace activities of work gangsfalsebool
TraceBlockOffsetTablePrint BlockOffsetTable mapsfalsebool
TraceCardTableModRefBSPrint CardTableModRefBS mapsfalsebool
TraceGCTaskManagerTrace actions of the GC task managerfalsebool
TraceGCTaskQueueTrace actions of the GC task queuesfalsebool
TraceGCTaskThreadTrace actions of the GC task threadsfalsebool
TraceParallelOldGCMarkingPhaseTrace parallel old gc marking phasefalsebool
TraceParallelOldGCSummaryPhaseTrace parallel old gc summary phasefalsebool
TraceParallelOldGCCompactionPhaseTrace parallel old gc compaction phasefalsebool
TraceParallelOldGCDensePrefixTrace parallel old gc dense prefix computationfalsebool
IgnoreLibthreadGPFaultSuppress workaround for libthread GP faultfalsebool
CIPrintCompilerNamewhen CIPrint is active, print the name of the active compilerfalsebool
CIPrintCompileQueuedisplay the contents of the compile queue whenever a compilation is enqueuedfalsebool
CIPrintRequestsdisplay every request for compilationfalsebool
CITimeEachdisplay timing information after each successful compilationfalsebool
CICountOSRuse a separate counter when assigning ids to osr compilationstruebool
CICompileNativescompile native methods if supported by the compilertruebool
CIPrintMethodCodesprint method bytecodes of the compiled codefalsebool
CIPrintTypeFlowprint the results of ciTypeFlow analysisfalsebool
CITraceTypeFlowdetailed per-bytecode tracing of ciTypeFlow analysisfalsebool
CICloneLoopTestLimitsize limit for blocks heuristically cloned in ciTypeFlow100intx
UseStackBanginguse stack banging for stack overflow checks (required for proper StackOverflow handling; disable only to measure cost of stackbanging)truebool
Use24BitFPModeSet 24-bit FPU mode on a per-compile basistruebool
Use24BitFPuse FP instructions that produce 24-bit precise resultstruebool
UseStrictFPuse strict fp if modifier strictfp is settruebool
GenerateSynchronizationCodegenerate locking/unlocking code for synchronized methods and monitorstruebool
GenerateCompilerNullChecksGenerate explicit null checks for loads/stores/callstruebool
GenerateRangeChecksGenerate range checks for array accessestruebool
PrintSafepointStatisticsprint statistics about safepoint synchronizationfalsebool
InlineAccessorsinline accessor methods (get/set)truebool
UseCHAenable CHAtruebool
PrintInliningprints inlining optimizationsfalsebool
EagerInitializationEagerly initialize classes if possiblefalsebool
TraceMethodReplacementPrint when methods are replaced do to recompilationfalsebool
PrintMethodFlushingprint the nmethods being flushedfalsebool
UseRelocIndexuse an index to speed random access to relocationsfalsebool
StressCodeBuffersExercise code buffer expansion and other rare state changesfalsebool
DebugVtablesadd debugging code to vtable dispatchfalsebool
PrintVtablesprint vtables when printing klassfalsebool
TraceCreateZombiestrace creation of zombie nmethodsfalsebool
MonomorphicArrayCheckUncommon-trap array store checks that require full type checktruebool
DelayCompilationDuringStartupDelay invoking the compiler until main application class is loadedtruebool
CompileTheWorldCompile all methods in all classes in bootstrap class path (stress test)falsebool
CompileTheWorldPreloadClassesPreload all classes used by a class before start loadingtruebool
TraceIterativeGVNPrint progress during Iterative Global Value Numberingfalsebool
FillDelaySlotsFill delay slots (on SPARC only)truebool
VerifyIterativeGVNVerify Def-Use modifications during sparse Iterative Global Value Numberingfalsebool
TimeLivenessAnalysisTime computation of bytecode liveness analysisfalsebool
TraceLivenessGenTrace the generation of liveness analysis informationfalsebool
PrintDominatorsPrint out dominator trees for GVNfalsebool
UseLoopSafepointsGenerate Safepoint nodes in every looptruebool
DeutschShiffmanExceptionsFast check to find exception handler for precisely typed exceptionstruebool
FastAllocateSizeLimitInline allocations larger than this in doublewords must go slow100000intx
UseVTuneenable support for Intel's VTune profilerfalsebool
CountCompiledCallscounts method invocationsfalsebool
CountJNICallscounts jni method invocationsfalsebool
ClearInterpreterLocalsAlways clear local variables of interpreter activations upon entryfalsebool
UseFastSignatureHandlersUse fast signature handlers for native callstruebool
UseV8InstrsOnlyUse SPARC-V8 Compliant instruction subsetfalsebool
UseCASForSwapDo not use swap instructions, but only CAS (in a loop) on SPARCfalsebool
PoisonOSREntryDetect abnormal calls to OSR codetruebool
CountBytecodesCount number of bytecodes executedfalsebool
PrintBytecodeHistogramPrint histogram of the executed bytecodesfalsebool
PrintBytecodePairHistogramPrint histogram of the executed bytecode pairsfalsebool
PrintSignatureHandlersPrint code generated for native method signature handlersfalsebool
VerifyOopsDo plausibility checks for oopsfalsebool
CheckUnhandledOopsCheck for unhandled oops in VM codefalsebool
VerifyJNIFieldsVerify jfieldIDs for instance fieldstrueInDebugbool
VerifyFPUVerify FPU state (check for NaN's, etc.)falsebool
VerifyThreadWatch the thread register for corruption (SPARC only)falsebool
VerifyActivationFrameSizeVerify that activation frame didn't become smaller than its minimal sizefalsebool
TraceFrequencyInliningTrace frequency based inliningfalsebool
PrintMethodDataPrint the results of +ProfileInterpreter at end of runfalsebool
VerifyDataPointerVerify the method data pointer during interpreter profilingtrueInDebugbool
TraceCompilationPolicyTrace compilation policyfalsebool
TimeCompilationPolicyTime the compilation policyfalsebool
CounterHalfLifeTimehalf-life time of invocation counters (in secs)30intx
CounterDecayMinIntervalLengthMin. ms. between invocation of CounterDecay500intx
TraceDeoptimizationTrace deoptimizationfalsebool
DebugDeoptimizationTracing various information while debugging deoptimizationfalsebool
GuaranteedSafepointIntervalGuarantee a safepoint (at least) every so many milliseconds (0 means none)1000intx
SafepointTimeoutDelayDelay in milliseconds for option SafepointTimeout10000intx
MallocCatchPtrHit breakpoint when mallocing/freeing this pointer-1intx
TotalHandleAllocationLimitThreshold for total handle allocation when +TraceHandleAllocation is used1024uintx
StackPrintLimitnumber of stack frames to print in VM-level stack dump100intx
MaxInlineLevelmaximum number of nested calls that are inlined9intx
MaxRecursiveInlineLevelmaximum number of nested recursive calls that are inlined1intx
InlineSmallCodeOnly inline already compiled methods if their code size is less than this1000intx
MaxTrivialSizemaximum bytecode size of a trivial method to be inlined6intx
MinInliningThresholdmin. invocation count a method needs to have to be inlined250intx
AlignEntryCodealigns entry code to specified value (in bytes)4intx
MethodHistogramCutoffcutoff value for method invoc. histogram (+CountCalls)100intx
ProfilerNumberOfInterpretedMethods# of interpreted methods to show in profile25intx
ProfilerNumberOfCompiledMethods# of compiled methods to show in profile25intx
ProfilerNumberOfStubMethods# of stub methods to show in profile25intx
ProfilerNumberOfRuntimeStubNodes# of runtime stub nodes to show in profile25intx
DontYieldALotIntervalInterval between which yields will be dropped (milliseconds)10intx
MinSleepIntervalMinimum sleep() interval (milliseconds) when ConvertSleepToYield is off (used for SOLARIS)1intx
ProfilerPCTickThresholdNumber of ticks in a PC buckets to be a hotspot15intx
StressNonEntrantMark nmethods non-entrant at registrationfalsebool
TypeProfileWidthnumber of receiver types to record in call profile2intx
BciProfileWidthnumber of return bci's to record in ret profile2intx
FreqCountInvocationsScaling factor for branch frequencies (deprecated)1intx
InlineFrequencyRatioRatio of call site execution to caller method invocation20intx
InlineThrowCountForce inlining of interpreted methods that throw this often50intx
InlineThrowMaxSizeForce inlining of throwing methods smaller than this200intx
VerifyAliasesperform extra checks on the results of alias analysisfalsebool
ProfilerNodeSizeSize in K to allocate for the Profile Nodes of each thread1024intx
V8AtomicOperationUnderLockSpinCountNumber of times to spin wait on a v8 atomic operation lock50intx
ExitAfterGCNumIf non-zero, exit after this GC.0uintx
GCExpandToAllocateDelayMillisDelay in ms between expansion and allocation0uintx
CodeCacheSegmentSizeCode cache segment size (in bytes) - smallest unit of allocation64uintx
BinarySwitchThresholdMinimal number of lookupswitch entries for rewriting to binary switch5intx
StopInterpreterAtStops interpreter execution at specified bytecode number0intx
TraceBytecodesAtTraces bytecodes starting with specified bytecode number0intx
CIStartthe id of the first compilation to permit0intx
CIStopthe id of the last compilation to permit-1intx
CIStartOSRthe id of the first osr compilation to permit (CICountOSR must be on)0intx
CIStopOSRthe id of the last osr compilation to permit (CICountOSR must be on)-1intx
CIBreakAtOSRid of osr compilation to break at-1intx
CIBreakAtid of compilation to break at-1intx
CIFireOOMAtFire OutOfMemoryErrors throughout CI for testing the compiler (non-negative value throws OOM after this many CI accesses in each compile)-1intx
CIFireOOMAtDelayWait for this many CI accesses to occur in all compiles before beginning to throw OutOfMemoryErrors in each compile-1intx
NewCodeParameterTesting Only: Create a dedicated integer parameter before putback0intx
MinOopMapAllocationMinimum number of OopMap entries in an OopMapSet8intx
LongCompileThresholdUsed with +TraceLongCompiles50intx
MaxRecompilationSearchLengthmax. # frames to inspect searching for recompilee10intx
MaxInterpretedSearchLengthmax. # interp. frames to skip when searching for recompilee3intx
DesiredMethodLimitdesired max. method size (in bytecodes) after inlining8000intx
HugeMethodLimitdon't compile methods larger than this if +DontCompileHugeMethods8000intx
UseNewReflectionTemporary flag for transition to reflection based on dynamic bytecode generation in 1.4; can no longer be turned off in 1.4 JDK, and is unneeded in 1.3 JDK, but marks most places VM changes were neededtruebool
VerifyReflectionBytecodesForce verification of 1.4 reflection bytecodes. Does not work in situations like that described in 4486457 or for constructors generated for serialization, so can not be enabled in product.falsebool
FastSuperclassLimitDepth of hardwired instanceof accelerator array8intx
PerfTraceDataCreationTrace creation of Performance Data Entriesfalsebool
PerfTraceMemOpsTrace PerfMemory create/attach/detach callsfalsebool
SharedOptimizeColdStartPolicyReordering policy for SharedOptimizeColdStart 0=favor classload-time locality, 1=balanced, 2=favor runtime locality2intx
UseLargePagesUse large page memorybool
UseSSE0=fpu stack,1=SSE for floats,2=SSE/SSE2 for all (x86/amd only)intx
UseISMUse Intimate Shared Memory. [Not accepted for non-Solaris platforms.] For details, see Intimate Shared Memory.truebool
UseMPSSUse Multiple Page Size Support w/4mb pages for the heap. Do not use with ISM as this replaces the need for ISM. (Introduced in 1.4.0 update 1, Relevant to Solaris 9 and newer.) [1.4.1 and earlier: false]falsebool
BackgroundCompilationA thread requesting compilation is not blocked during compilationbool
UseVectoredExceptionsTemp Flag - Use Vectored Exceptions rather than SEH (Windows Only)bool
DontYieldALotThrow away obvious excess yield calls (for SOLARIS only)bool
ConvertSleepToYieldConverts sleep(0) to thread yield (may be off for SOLARIS to improve GUI)bool
UseTLABUse thread-local object allocationbool
ResizeTLABDynamically resize tlab size for threadsbool
NeverActAsServerClassMachineNever act like a server-class machinebool
PrefetchCopyIntervalInBytesHow far ahead to prefetch destination area (<= 0 means off)intx
PrefetchScanIntervalInBytesHow far ahead to prefetch scan area (<= 0 means off)intx
PrefetchFieldsAheadHow many fields ahead to prefetch in oop scan (<= 0 means off)intx
CompilationPolicyChoicewhich compilation policyintx
RewriteBytecodesAllow rewriting of bytecodes (bytecodes are not immutable)bool
RewriteFrequentPairsRewrite frequently used bytecode pairs into a single bytecodebool
UseOnStackReplacementUse on stack replacement, calls runtime if invoc. counter overflows in loopbool
PreferInterpreterNativeStubsUse always interpreter stubs for native methods invoked via interpreterbool
AllocatePrefetchStyle0=no prefetch, 1=dead load, 2=prefetch instructionintx
AllocatePrefetchDistanceDistance to prefetch ahead of allocation pointerintx
FreqInlineSizemaximum bytecode size of a frequent method to be inlinedintx
PreInflateSpinNumber of times to spin wait before inflationintx
NewSizeDefault size of new generation (in bytes)uintx
TLABSizeDefault (or starting) size of TLAB (in bytes)uintx
SurvivorRatioRatio of eden/survivor space sizeintx
NewRatioRatio of new/old generation sizesintx
NewSizeThreadIncreaseAdditional size added to desired new generation size per non-daemon thread (in bytes)uintx
PermSizeDefault size of permanent generation (in bytes)uintx
MaxPermSizeMaximum size of permanent generation (in bytes)uintx
StackYellowPagesNumber of yellow zone (recoverable overflows) pagesintx
StackRedPagesNumber of red zone (unrecoverable overflows) pagesintx
StackShadowPagesNumber of shadow zone (for overflow checking) pages this should exceed the depth of the VM and native call stack. In the HotSpot implementation, Java methods share stack frames with C/C++ native code, namely user native code and the virtual machine itself. Java methods generate code that checks that stack space is available a fixed distance towards the end of the stack so that the native code can be called without exceeding the stack space. This distance towards the end of the stack is called “Shadow Pages”. The page size usually is 4096b, which mean that 20 pages would occupy 90Kb. See some more info on that parameter in bug 7059899 and Crash due to Stack Overflow section of "Troubleshooting System Crashes" from Oracle.Depends on machine. It's 3 on x86, 6 on amd64, etcintx
ThreadStackSizeThread Stack Size (in Kbytes)intx
VMThreadStackSizeNon-Java Thread Stack Size (in Kbytes)intx
CompilerThreadStackSizeCompiler Thread Stack Size (in Kbytes)intx
InitialCodeCacheSizeInitial code cache size (in bytes)uintx
ReservedCodeCacheSizeReserved code cache size (in bytes) - maximum code cache sizeuintx
CodeCacheExpansionSizeCode cache expansion size (in bytes)uintx
CompileThresholdnumber of method invocations/branches before (re-)compiling10000intx
Tier2CompileThresholdthreshold at which a tier 2 compilation is invokedintx
Tier2BackEdgeThresholdBack edge threshold at which a tier 2 compilation is invokedintx
TieredCompilationEnable two-tier compilationbool
OnStackReplacePercentagenumber of method invocations/branches (expressed as % of CompileThreshold) before (re-)compiling OSR codeintx
ShareVtableStubsShare vtable stubs (smaller code but worse branch predictionbool
CICompileOSRcompile on stack replacement methods if supported by the compilerbool
ImplicitNullChecksgenerate code for implicit null checksbool
UncommonNullCastUncommon-trap NULLs passed to check castbool
InlineIntrinsicsInline intrinsics that can be statically resolvedbool
ProfileInterpreterProfile at the bytecode level during interpretationbool
ProfileTrapsProfile deoptimization traps at the bytecode levelbool
InlineFrequencyCountCount of call site execution necessary to trigger frequent inliningintx
JVMInvokeMethodSlackStack space (bytes) required for JVM_InvokeMethod to completeuintx
CodeEntryAlignmentCode entry alignment for generated code (in bytes)intx
CodeCacheMinBlockLengthMinimum number of segments in a code cache block.uintx
StressDerivedPointersForce scavenge when a derived pointers is detected on stack after rtm callfalsebool
TraceCodeBlobStacksTrace stack-walk of codeblobsfalsebool
PrintRewritesPrint methods that are being rewrittenfalsebool
DeoptimizeRandomdeoptimize random frames on random exit from the runtime systemfalsebool
ZombieALotcreates zombies (non-entrant) at exit from the runt. systemfalsebool
WalkStackALottrace stack (no print) at every exit from the runtime systemfalsebool
StrictSafepointChecksEnable strict checks that safepoints cannot happen for threads that used No_Safepoint_VerifiertrueInDebugbool
VerifyLastFrameVerify oops on last frame on entry to VMfalsebool
LogEventsEnable Event logtrueInDebugbool
CheckAssertionStatusDirectivestemporary - see javaClasses.cppfalsebool
PrintMallocFreeTrace calls to C heap malloc/free allocationfalsebool
PrintOopAddressAlways print the location of the oopfalsebool
VerifyCodeCacheOftenVerify compiled-code cache oftenfalsebool
ZapDeadLocalsOldZap dead locals (old version, zaps all frames when entering the VMfalsebool
CheckOopishValuesWarn if value contains oop ( requires ZapDeadLocals)falsebool
ZapVMHandleAreaZap freed VM handle space with 0xBCBCBCBCtrueInDebugbool
PrintCompilation2Print additional statistics per compilationfalsebool
PrintAdapterHandlersPrint code generated for i2c/c2i adaptersfalsebool
PrintCodeCachePrint the compiled_code cache when exitingfalsebool
ProfilerCheckIntervalsCollect and print info on spacing of profiler ticksfalsebool
WarnOnStalledSpinLockPrints warnings for stalled SpinLocks0uintx
PrintSystemDictionaryAtExitPrints the system dictionary at exitfalsebool
ValidateMarkSweepDo extra validation during MarkSweep collectionfalsebool
RecordMarkSweepCompactionEnable GC-to-GC recording and querying of compaction during MarkSweepfalsebool
TraceRuntimeCallsTrace run-time callsfalsebool
TraceJVMCallsTrace JVM callsfalsebool
TraceInvocationCounterOverflowTrace method invocation counter overflowfalsebool
TraceZapDeadLocalsTrace zapping dead localsfalsebool
CMSMarkStackOverflowALotWhether we should simulate frequent marking stack / work queue" overflowfalsebool
CMSMarkStackOverflowIntervalA per-thread `interval' counter that determines how frequently" we simulate overflow; a smaller number increases frequency1000intx
CMSVerifyReturnedBytesCheck that all the garbage collected was returned to the free lists.falsebool
ScavengeALotForce scavenge at every Nth exit from the runtime system (N=ScavengeALotInterval)falsebool
GCALotAtAllSafepointsEnforce ScavengeALot/GCALot at all potential safepointsfalsebool
PromotionFailureALotUse promotion failure handling on every youngest generation collectionfalsebool
CheckMemoryInitializationChecks memory initializationfalsebool
TraceMarkSweepTrace mark sweepfalsebool
PrintReferenceGCPrint times spent handling reference objects during GC (enabled only when PrintGCDetails)falsebool
TraceScavengeTrace scavengefalsebool
TimeCompilertime the compilerfalsebool
TimeCompiler2detailed time the compiler (requires +TimeCompiler)falsebool
LogMultipleMutexLockinglog locking and unlocking of mutexes (only if multiple locks are held)falsebool
PrintSymbolTableSizeHistogramprint histogram of the symbol tablefalsebool
ExitVMOnVerifyErrorstandard exit from VM if bytecode verify error (only in debug mode)falsebool
AbortVMOnExceptionCall fatal if this exception is thrown. Example: java -XX:AbortVMOnException=java.lang.NullPointerException Foo""ccstr
PrintVtableStatsprint vtables stats at end of runfalsebool
IgnoreLockingAssertionsdisable locking assertions (for speed)falsebool
VerifyLoopOptimizationsverify major loop optimizationsfalsebool
CompileTheWorldIgnoreInitErrorsCompile all methods although class initializer failedfalsebool
TracePhaseCCPPrint progress during Conditional Constant Propagationfalsebool
TraceLivenessQueryTrace queries of liveness analysis informationfalsebool
CollectIndexSetStatisticsCollect information about IndexSetsfalsebool
TraceCISCSpillTrace allocators use of cisc spillable instructionsfalsebool
TraceSpillingTrace spillingfalsebool
CountVMLockscounts VM internal lock attempts and contentionfalsebool
CountRuntimeCallscounts VM runtime callsfalsebool
CountJVMCallscounts jvm method invocationsfalsebool
CountRemovableExceptionscount exceptions that could be replaced by branches due to inliningfalsebool
ICMissHistogramproduce histogram of IC missesfalsebool
PrintClassStatisticsprints class statistics at end of runfalsebool
PrintMethodStatisticsprints method statistics at end of runfalsebool
TraceOnStackReplacementTrace on stack replacementfalsebool
VerifyJNIEnvThreadVerify JNIEnv.thread == Thread::current() when entering VM from JNIfalsebool
TraceTypeProfileTrace type profilefalsebool
MemProfilingIntervalTime between each invocation of the MemProfiler500intx
AssertRepeatnumber of times to evaluate expression in assert (to estimate overhead); only works with -DUSE_REPEATED_ASSERTS1intx
SuppressErrorAtList of assertions (file:line) to muzzle""ccstr
HandleAllocationLimitThreshold for HandleMark allocation when +TraceHandleAllocation is used1024uintx
MaxElementPrintSizemaximum number of elements to print256intx
MaxSubklassPrintSizemaximum number of subklasses to print when printing klass4intx
ScavengeALotIntervalInterval between which scavenge will occur with +ScavengeALot1intx
FullGCALotIntervalInterval between which full gc will occur with +FullGCALot1intx
FullGCALotStartFor which invocation to start FullGCAlot0intx
FullGCALotDummiesDummy object allocated with +FullGCALot, forcing all objects to move32*Kintx
DeoptimizeALotIntervalNumber of exits until DeoptimizeALot kicks in5intx
ZombieALotIntervalNumber of exits until ZombieALot kicks in5intx
ExitOnFullCodeCacheExit the VM if we fill the code cache.falsebool
CompileTheWorldStartAtFirst class to consider when using +CompileTheWorld1intx
CompileTheWorldStopAtLast class to consider when using +CompileTheWorldmax_jintintx
PrintFlagsFinalPrints list of all available java paramenters. Information is displayed in 4 columns. First one is the type of parameter, second is parameter name, third is default value and the fourth is the type of the flag, i.e. product, diagnostic, C1 product (only for client JVM), C2 product (only for server JVM), etc. Available since 1.6.
UnlockDiagnosticVMOptionsEnable processing of flags relating to field diagnosticstrueInDebugbool
LogCompilationLog compilation activity in detail to hotspot.log or LogFilefalsebool
UnsyncloadClassUnstable: VM calls loadClass unsynchronized. Custom classloader must call VM synchronized for findClass & defineClassfalsebool
FLSVerifyAllHeapReferencesVerify that all refs across the FLS boundary are to valid objectsfalsebool
FLSVerifyListsDo lots of (expensive) FreeListSpace verificationfalsebool
FLSVerifyIndexTableDo lots of (expensive) FLS index table verificationfalsebool
VerifyBeforeExitVerify system before exitingtrueInDebugbool
VerifyBeforeGCVerify memory system before GCfalsebool
VerifyAfterGCVerify memory system after GCfalsebool
VerifyDuringGCVerify memory system during GC (between phases)falsebool
VerifyRememberedSetsVerify GC remembered setsfalsebool
VerifyObjectStartArrayVerify GC object start array if verify before/aftertruebool
BindCMSThreadToCPUBind CMS Thread to CPU if possiblefalsebool
CPUForCMSThreadWhen BindCMSThreadToCPU is true, the CPU to bind CMS thread to0uintx
TraceJVMTIObjectTaggingTrace JVMTI object tagging callsfalsebool
VerifyBeforeIterationVerify memory system before JVMTI iterationfalsebool
DebugNonSafepointsGenerate extra debugging info for non-safepoints in nmethodstrueInDebugbool
SerializeVMOutputUse a mutex to serialize output to tty and hotspot.logtruebool
DisplayVMOutputDisplay all VM output on the tty, independently of LogVMOutputtruebool
LogVMOutputSave VM output to hotspot.log, or to LogFiletrueInDebugbool
LogFileIf LogVMOutput is on, save VM output to this file [hotspot.log]""ccstr
MallocVerifyIntervalif non-zero, verify C heap after every N calls to malloc/realloc/free0intx
MallocVerifyStartif non-zero, start verifying C heap after Nth call to malloc/realloc/free0intx
VerifyGCStartAtGC invoke count where +VerifyBefore/AfterGC kicks in0uintx
VerifyGCLevelGeneration level at which to start +VerifyBefore/AfterGC0intx
UseNewCodeTesting Only: Use the new version while testingfalsebool
UseNewCode2Testing Only: Use the new version while testingfalsebool
UseNewCode3Testing Only: Use the new version while testingfalsebool
SharedOptimizeColdStartAt dump time, order shared objects to achieve better cold startup time.truebool
SharedSkipVerifySkip assert() and verify() which page-in unwanted shared objects.falsebool
PauseAtStartupCauses the VM to pause at startup time and wait for the pause file to be removed (default: ./vm.paused.)falsebool
PauseAtStartupFileThe file to create and for whose removal to await when pausing at startup. (default: ./vm.paused.)""ccstr



Thread-local allocation buffer. Used to allocate heap space quickly without synchronization. Compiled code has a "fast path" of a few instructions which tries to bump a high-water mark in the current thread's TLAB, successfully allocating an object if the bumped mark falls before a TLAB-specific limit address. Here is nice article with explanation about TLABs.


Olivier Jaquemet said...

Thanks for this nice list, one small mistake though :

Regarding options MaxJavaStackTraceDepth :
* With Java > 1.6, value 0 really means 0. value -1 or any negative number must be specified to print all the stack (tested with 1.6.0_22, 1.7.0 on Windows)
* With Java <= 1.5, value 0 means everything, JVM chokes on negative number (tested with 1.5.0_22 on Windows)

Stas said...

Thanks! Updated.

Thomas Darimont said...


one can output a list of available / supported JVM Options (official and unofficial) via:
java -XX:+UnlockDiagnosticVMOptions -XX:+PrintFlagsFinal -version
Best regards,Thomas

Jim said...

This one is especially important for Apple developers because at times OSX will deliver files in MacRoman encoding which then mistranslates UTF-8 characters above 127 into bizarre ascii representations. It's awkward.

vikas said...

Quite informative, thanks for the post.

randeepsp said...

ReduceInitialCardMarks option is not in the list. I would like to know its use.

Mariano Paniga said...

Here there is A Collection of JVM options with hotspot version.

cambecc said...

PrintGCDateStamps should be added to the list. It's the same as PrintGCTimeStamps but prints the current time in ISO 8601 format.

Stas said...

Thanks. Updated.