Geek漫游指南

Hotspot JVM 1.8 参数查阅手册

date
slug
jvm-hotspot-jvm-params
author
status
Public
tags
技术分享
summary
type
Post
thumbnail
category
💻 Backend
updatedAt
Oct 29, 2023 07:21 AM
这里整理下 JVM 相关的参数信息,本文档使用的是 MAC OS 平台的 Hotspot JVM,版本为 1.8.0_181。

JVM 运行模式

Hotspot JVM 有两种运行模式,分别是 server 和 client。 它们的区别是 server 的初始堆空间会大一些,默认使用的是并行垃圾回收器,启动慢运行快。client VM 相对来讲会保守一些,初始堆空间会小一些,使用串行的垃圾回收器,它的目标是为了让 JVM 的启动速度更快,但运行速度会比 server 模式慢些。 可以使用-server 和-client 选项来指定 JVM 的类型。
  • XX:+PrintGCDetails
堆设置 -Xms:初始堆大小 -Xmx:最大堆大小 -Xmn:新生代大小 -XX:NewRatio:设置新生代和老年代的比值。如:为3,表示年轻代与老年代比值为1:3 -XX:SurvivorRatio:新生代中Eden区与两个Survivor区的比值。注意Survivor区有两个。如:为3,表示Eden:Survivor=3:2,一个Survivor区占整个新生代的1/5
-XX:MaxTenuringThreshold:设置转入老年代的存活次数。如果是0,则直接跳过新生代进入老年代 -XX:PermSize、-XX:MaxPermSize:分别设置永久代最小大小与最大大小(Java8以前) -XX:MetaspaceSize、-XX:MaxMetaspaceSize:分别设置元空间最小大小与最大大小(Java8以后)
收集器设置 -XX:+UseSerialGC:设置串行收集器 -XX:+UseParallelGC:设置并行收集器 -XX:+UseParalledlOldGC:设置并行老年代收集器 -XX:+UseConcMarkSweepGC:设置并发收集器
垃圾回收统计信息 -XX:+PrintGC -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -Xloggc:filename
并行收集器设置 -XX:ParallelGCThreads=n:设置并行收集器收集时使用的CPU数。并行收集线程数。 -XX:MaxGCPauseMillis=n:设置并行收集最大暂停时间 -XX:GCTimeRatio=n:设置垃圾回收时间占程序运行时间的百分比。公式为1/(1+n)
并发收集器设置 -XX:+CMSIncrementalMode:设置为增量模式。适用于单CPU情况。 -XX:ParallelGCThreads=n:设置并发收集器新生代收集方式为并行收集时,使用的CPU数。并行收集线程数。
GC参数解读
notion image
FullGC参数解读
notion image
规律: 【名称】【GC前内存占用】(->)【GC后内存占用】(该区内存总大小)

X 选项

java -X 可以输出所以的 X 的选项,下面列出一些常用的选项。
-Xmixed 混合模式执行 (默认) -Xint 仅解释模式执行 -Xloggc:<file> 将 GC 状态记录在文件中 (带时间戳) -Xms<size> 设置初始 Java 堆大小 默认为物理内存的1/64 -Xmx<size> 设置最大 Java 堆大小 默认为物理内存的1/4 -Xss<size> 设置 Java 线程堆栈大小,即栈的大小.在相同物理内存下,减小这个值能生成更多的线程 -Xmn<size> -Xmn 堆内新生代的大小。通过这个值也可以得到老生代的大小:-Xmx减去-Xmn

XX 选项

查看所有 XX 选项的执行语句为:java -XX:+PrintFlagsInitial,对应的配置语法如下:
  • 如果是布尔类型的选项,它的格式为-XX:+flag 或者-XX:-flag,分别表示开启和关闭选项。
  • 针对非布尔类型的选项,它的格式为-XX:flag=value
说明部分是从互联网上搜集到的相关的定义,我整理的差不多的时候才知道,源码里有你想要的一切: http://hg.openjdk.java.net/jdk8/jdk8/hotspot/file/tip/src/share/vm/runtime/globals.hpp
参数名
默认值
说明
AdaptiveSizeDecrementScaleFactor
4
Adaptive size scale down factor for shrinking
AdaptiveSizeMajorGCDecayTimeScale
10
Time scale over which major costs decay
AdaptiveSizePausePolicy
0
Policy for changing generation size for pause goals
AdaptiveSizePolicyCollectionCostMargin
50
If collection costs are within margin, reduce both by full delta
AdaptiveSizePolicyInitializingSteps
20
Number of steps where heuristics is used before data is used
AdaptiveSizePolicyOutputInterval
0
Collecton interval for printing information, zero => never
AdaptiveSizePolicyWeight
10
Weight given to exponential resizing, between 0 and 100
AdaptiveSizeThroughPutPolicy
0
Policy for changeing generation size for throughput goals
AdaptiveTimeWeight
25
Weight given to time in adaptive policy, between 0 and 100
AdjustConcurrency
false
call thr_setconcurrency at thread create time to avoid LWP starvation on MP systems (For Solaris Only)
AggressiveOpts
false
允许使用积极的性能优化功能,这些功能有望在即将发布的版本中成为默认功能。默认情况下,禁用此选项并且不使用实验性能功能。
AliasLevel
3
0 for no aliasing, 1 for oop/field/static/array split, 2 for best
AlignVector
true
Perform vector store/load alignment in loop
AllocateInstancePrefetchLines
1
设置在实例分配指针之前预取的行数。
AllocatePrefetchDistance
-1
设置对象分配的预取距离的大小(以字节为单位)。将从最后分配的对象的地址开始预取将要使用新对象的值写入的内存。每个Java线程都有自己的分配点。负值表示基于平台选择预取距离。正值是预取的字节数。附加字母k或K表示千字节,m或M指示兆字节,g或G指示千兆字节。
AllocatePrefetchInstr
0
将预取指令设置为在分配指针之前预取。
AllocatePrefetchLines
3
使用编译代码中生成的预取指令设置在最后一次对象分配后要加载的高速缓存行数。如果最后分配的对象是实例,则默认值为1;如果是数组,则默认值为3。
AllocatePrefetchStepSize
16
设置顺序预取指令的步长(以字节为单位)。附加字母k或K表示千字节,m或M指示兆字节,g或G指示千兆字节。
AllocatePrefetchStyle
1
为预取指令设置生成的代码样式。0:不要生成预取指令。1:每次分配后执行预取指令。2:使用线程局部分配块(TLAB)水印指针来确定何时执行预取指令。3:在SPARC上使用BIS指令进行分配预取。
AllowJNIEnvProxy
false
Allow JNIEnv proxies for jdbx
AllowNonVirtualCalls
false
Obey the ACC_SUPER flag and allow invokenonvirtual calls
AllowParallelDefineClass
false
Allow parallel defineClass requests for class loaders registering as parallel capable
AllowUserSignalHandlers
false
允许为java进程安装信号处理器。
AlwaysActAsServerClassMachine
false
Always act like a server-class machine
AlwaysCompileLoopMethods
false
when using recompilation, never interpret methods containing loops
AlwaysLockClassLoader
false
Require the VM to acquire the class loader lock before calling loadClass() even for class loaders registering as parallel capable
AlwaysPreTouch
false
在JVM初始化期间允许触摸Java堆上的每个页面。这会在进入main()方法之前将所有页面放入内存中。该选项可用于测试以模拟长时间运行的系统,其中所有虚拟内存都映射到物理内存。
AlwaysRestoreFPU
false
Restore the FPU control word after every JNI call (expensive)
AlwaysTenure
false
Always tenure objects in eden. (ParallelGC only)
AssertOnSuspendWaitFailure
false
Assert/Guarantee on external suspend wait failure
AssumeMP
false
ㅤ
AutoBoxCacheMax
128
自动装箱拆箱缓存的最大值
AutoGCSelectPauseMillis
5000
Automatic GC selection pause threshhold in ms
BCEATraceLevel
0
How much tracing to do of bytecode escape analysis estimates
BackEdgeThreshold
100000
统计一个方法中循环体代码执行的次数。
BackgroundCompilation
true
启用后台编译。
BaseFootPrintEstimate
2^28
Estimate of footprint other than Java Heap
BiasedLockingBulkRebiasThreshold
20
偏向锁总撤销次数阈值。某一类锁的对象的总撤销次数超过该值,JVM会宣布该类的偏向锁失效。
BiasedLockingBulkRevokeThreshold
40
偏向锁总撤销次数阈值。如果总撤销数超过该值,JVM会撤销该类实例的偏向锁,并且在之后的加锁过程中直接为该类实例设置轻量级锁。
BiasedLockingDecayTime
25000
开启一次新的批量重偏向距离上次批量重偏向的后的延迟时间。就是开启批量重偏向后,经过了一段较长的时间(>=BiasedLockingDecayTime),撤销计数器才超过阈值,那我们会重置计数器。
BiasedLockingStartupDelay
4000
JVM启用后启用偏向锁的延迟时间。
BindGCTaskThreadsToCPUs
false
绑定GC线程到个别的CPU核。仅在Solaris支持。
BlockLayoutByFrequency
true
从热路径移动不频繁的执行分支。
BlockLayoutMinDiamondPercentage
20
Miniumum %% of a successor (predecessor) for which block layout a will allow a fork (join) in a single chain
BlockLayoutRotateLoops
true
Allow back branches to be fall throughs in the block layour
BranchOnRegister
false
Use Sparc V9 branch-on-register opcodes
BytecodeVerificationLocal
false
Enables the Java bytecode verifier for local classes
BytecodeVerificationRemote
true
Enables the Java bytecode verifier for remote classes
C1OptimizeVirtualCallProfiling
true
Use CHA and exact type results at call sites when updating MDOs
C1ProfileBranches
true
Profile branches when generating code for updating MDOs
C1ProfileCalls
true
Profile calls when generating code for updating MDOs
C1ProfileCheckcasts
true
rofile checkcasts when generating code for updating MDOs
C1ProfileInlinedCalls
true
Profile inlined calls when generating code for updating MDOs
C1ProfileVirtualCalls
true
Profile virtual calls when generating code for updating MDOs
C1UpdateMethodData
true
Update methodDataOops in Tier1-generated code
CICompilerCount
2
设置用于编译的编译器线程数。
CICompilerCountPerCPU
false
单个CPU的编译器线程数。
CITime
false
打印消耗在JIT编译的时间
CMSAbortSemantics
false
Whether abort-on-overflow semantics is implemented
CMSAbortablePrecleanMinWorkPerIteration
100
(Temporary, subject to experimentation)" Nominal minimum work per abortable preclean iteration
CMSAbortablePrecleanWaitMillis
100
(Temporary, subject to experimentation)" Time that we sleep between iterations when not given" enough work per iteration
CMSBitMapYieldQuantum
10485760
Bitmap operations should process at most this many bits between yields
CMSBootstrapOccupancy
50
老年代CMS GC时空间占比阈值。如果预测CMS GC完成所需要的时间大于预计的老年代将要填满的时间,则进行GC。这些判断是需要基于历史的CMS GC统计指标,然而,第一次CMS GC时,统计数据还没有形成,这时会跟据老年代的使用占比来判断是否要进行GC。
CMSClassUnloadingEnabled
true
使用并发标记清除(CMS)垃圾收集器时启用类卸载。
CMSClassUnloadingMaxInterval
0
卸载类判定阈值,CMSClassUnloadingEnabled启用时,若上次卸载类之后发生gc的次数大于该值,则进行卸载类。
CMSCleanOnEnter
true
Clean-on-enter optimization for reducing number of dirty cards
CMSCompactWhenClearAllSoftRefs
true
回收软引用时进行CMS压缩。
CMSConcMarkMultiple
32
Size (in cards) of CMS concurrent MT marking task
CMSConcurrentMTEnabled
true
当该标志被启用时,并发的CMS阶段将以多线程执行(因此,多个GC线程会与所有的应用程序线程并行工作)。
CMSCoordinatorYieldSleepCount
10
number of times the coordinator GC thread will sleep while yielding before giving up and resuming GC
CMSDumpAtPromotionFailure
false
在晋升失败时dump信息。
CMSEdenChunksRecordAlways
true
preclean阶段不对eden进行抽样,而是在ParNew运行时抽样。
CMSExpAvgFactor
50
设置在计算并发收集统计信息的指数平均值时用于加权当前样本的时间百分比(0到100)。
CMSExtrapolateSweep
false
CMS: cushion for block demand during sweep
CMSFullGCsBeforeCompaction
0
设置执行多少次FullGC后才进行一次内存碎片整理。默认每次都进行内存碎片整理。
CMSIncrementalDutyCycle
10
每次增量回收垃圾的占总垃圾回收任务的比例。此选项在JDK 8中已弃用。
CMSIncrementalDutyCycleMin
0
每次增量回收垃圾的占总垃圾回收任务的最小比例。此选项在JDK 8中已弃用。
CMSIncrementalMode
false
开始CMS增量模式(i-cms)。在增量模式下,CMS收集器在并发阶段,不会独占整个周期,而会周期性的暂停,唤醒应用线程。收集器把并发阶段工作,划分为片段,安排在次级(minor)回收之间运行。这对需要低延时,运行在少量CPU服务器上的应用很有用。此选项在JDK 8中已弃用。
CMSIncrementalOffset
0
设置增量模式占空比在次要集合之间的时间段内向右移动的时间百分比(0到100)。在弃用选项后,此选项在JDK 8中已弃用。
CMSIncrementalPacing
true
根据应用程序的行为自动调整每次执行的垃圾回收任务的数量,此选项在JDK 8中已弃用。
CMSIncrementalSafetyFactor
10
设置计算占空比时用于添加保守性的时间百分比(0到100)。在弃用选项后,此选项在JDK 8中已弃用。
CMSIndexedFreeListReplenish
4
Replenish and indexed free list with this number of chunks
CMSInitiatingOccupancyFraction
-1
指定在老年代用掉多少内存后开始进行垃圾回收。与吞吐量优先的回收器不同的是,吞吐量优先的回收器在老生代内存用尽了以后才开始进行收集,这对CMS来讲是不行的,因为吞吐量优先的垃圾回收器运行的时候会停止所有用户线程,所以不会产生新的对象,而CMS运行的时候,用户线程还有可能产生新的对象,所以不能等到内存用光后才开始运行。比如-XX:CMSInitiatingOccupancyFraction=75表示老生代用掉75%后开始回收垃圾。
CMSIsTooFullPercentage
98
卸载类判定阈值,开启CMSClassUnloadingEnabled时,若老年代内存使用率高于该值,则进行类卸载。
CMSLargeCoalSurplusPercent
0.95
CMS: the factor by which to inflate estimated demand of large block sizes to prevent coalescing with an adjoining block
CMSLargeSplitSurplusPercent
1.00
CMS: the factor by which to inflate estimated demand of large block sizes to prevent splitting to supply demand for smaller blocks
CMSLoopWarn
false
Warn in case of excessive CMS looping
CMSMaxAbortablePrecleanLoops
0
预清理中最多循环的次数,循环超过该值,则退出循环。若为0,则无循环次数的限制。
CMSMaxAbortablePrecleanTime
5000
预清理阶段最长时间,如果达到该值,中止预清理阶段,进入remark。单位为毫秒。
CMSOldPLABMax
1024
Max size of CMS gen promotion lab caches per worker per blksize
CMSOldPLABMin
16
Min size of CMS gen promotion lab caches per worker per blksize
CMSOldPLABNumRefills
4
Nominal number of refills of CMS gen promotion lab cache per worker per block size
CMSOldPLABReactivityFactor
2
The gain in the feedback loop for on-the-fly PLAB resizing during a scavenge
CMSOldPLABResizeQuicker
false
Whether to react on-the-fly during a scavenge to a sudden change in block demand rate
CMSOldPLABToleranceFactor
4
The tolerance of the phase-change detector for on-the-fly PLAB resizing during a scavenge
CMSPLABRecordAlways
true
Whether to always record survivor space PLAB bdries" (effective only if CMSParallelSurvivorRemarkEnabled)
CMSParPromoteBlocksToClaim
16
Number of blocks to attempt to claim when refilling CMS LAB for parallel GC.
CMSParallelInitialMarkEnabled
true
初始化标记阶段启用并行处理。
CMSParallelRemarkEnabled
true
标记标记阶段启用并行处理。
CMSParallelSurvivorRemarkEnabled
true
Whether parallel remark of survivor space" enabled (effective only if CMSParallelRemarkEnabled)
CMSPrecleanDenominator
3
CMSPrecleanNumerator:CMSPrecleanDenominator yields convergence ratio
CMSPrecleanIter
3
Maximum number of precleaning iteration passes
CMSPrecleanNumerator
2
CMSPrecleanNumerator:CMSPrecleanDenominator yields convergence ratio
CMSPrecleanRefLists1
true
Preclean ref lists during (initial) preclean phase
CMSPrecleanRefLists2
false
Preclean ref lists during abortable preclean phase
CMSPrecleanSurvivors1
false
Preclean survivors during (initial) preclean phase
CMSPrecleanSurvivors2
true
Preclean survivors during abortable preclean phase
CMSPrecleanThreshold
1000
Don’t re-iterate if #dirty cards less than this
CMSPrecleaningEnabled
true
CMS是否需要进行Pre cleaning这个阶段。
CMSPrintChunksInDump
false
In a dump enabled by CMSDumpAtPromotionFailure, include more detailed information about the free chunks.
CMSPrintEdenSurvivorChunks
false
ㅤ
CMSPrintObjectsInDump
false
In a dump enabled by CMSDumpAtPromotionFailure, include more detailed information about the allocated objects.
CMSRemarkVerifyVariant
1
Choose variant (1,2) of verification following remark
CMSReplenishIntermediate
true
Replenish all intermediate free-list caches
CMSRescanMultiple
32
Size (in cards) of CMS parallel rescan task
CMSSamplingGrain
16384
The minimum distance between eden samples for CMS (see above)
CMSScavengeBeforeRemark
false
CMS在remark前强制进行一次MinorGC
CMSScheduleRemarkEdenPenetration
50
CMS预清理后,eden space的使用率如果低于该值,则中断预清理,进入remark阶段。
CMSScheduleRemarkEdenSizeThreshold
2097152
设置CMS重新标记的Eden区大小阈值。低于此值时不启动重新标记阶段,因为回收预期微不足道。
CMSScheduleRemarkSamplingRatio
5
Start sampling Eden top at least before yg occupancy reaches" 1/ of the size at which we plan to schedule remark
CMSSmallCoalSurplusPercent
1.05
CMS: the factor by which to inflate estimated demand of small block sizes to prevent coalescing with an adjoining block
CMSSmallSplitSurplusPercent
1.10
CMS: the factor by which to inflate estimated demand of large block sizes to prevent coalescing with an adjoining block
CMSSplitIndexedFreeListBlocks
true
When satisfying batched demand, split blocks from the IndexedFreeList whose size is a multiple of requested size
CMSTriggerInterval
-1
CMS回收的间隔。如果=0表示一直触发。
CMSTriggerRatio
80
设置在-XX:MinHeapFreeRatioCMS收集周期开始之前分配的值所指定的值的百分比(0到100)。
CMSWaitDuration
2000
轮询判断老年代是否需要进行GC,每次轮循阻塞线程的时间。
CMSWorkQueueDrainThreshold
10
Don’t drain below this size per parallel worker/thief
CMSYield
true
Yield between steps of concurrent mark & sweep
CMSYieldSleepCount
0
number of times a GC thread (minus the coordinator) will sleep while yielding before giving up and resuming GC
CMSYoungGenPerWorker
67108864
每个worker对应的年轻代大小?跟硬件相关,x86机器为64M。
CMS_FLSPadding
1
The multiple of deviation from mean to use for buffering" against volatility in free list demand.
CMS_FLSWeight
75
Percentage (0-100) used to weight the current sample when" computing exponentially decating averages for CMS FLS statistics.
CMS_SweepPadding
1
The multiple of deviation from mean to use for buffering" against volatility in inter-sweep duration.
CMS_SweepTimerThresholdMillis
10
Skip block flux-rate sampling for an epoch unless inter-sweep duration exceeds this threhold in milliseconds
CMS_SweepWeight
75
Percentage (0-100) used to weight the current sample when" computing exponentially decaying average for inter-sweep duration.
CheckEndorsedAndExtDirs
false
ㅤ
CheckJNICalls
false
Verify all arguments to JNI calls
ClassUnloading
true
启用对类进行回收。
ClassUnloadingWithConcurrentMark
true
在并发标记阶段结束后,启用该参数则进行类型卸载。
ClearFPUAtPark
0
(Unsafe,Unstable)
ClipInlining
true
clip inlining if aggregate method exceeds DesiredMethodLimit
CodeCacheExpansionSize
65536
用于设置code cache的expansion size
CodeCacheMinimumFreeSpace
512000
设置编译所需的最小可用空间(以字节为单位)。
CollectGen0First
false
FullGC时是否先YGC。
CompactFields
true
是否在header与下一个8-byte对齐位置之间的空隙处存放成员。
CompilationPolicyChoice
0
which compilation policy
CompileCommand
ㅤ
指定要对方法执行的命令。
CompileCommandFile
ㅤ
设置从中读取JIT编译器命令的文件。
CompileOnly
ㅤ
List of methods (pkg/class.name) to restrict compilation to
CompileThreshold
10000
方法触发编译时的调用次数。
CompilerThreadHintNoPreempt
true
设置应限制编译的方法列表(以逗号分隔)。仅编译指定的方法。使用完整的类名(包括包和子包)指定每个方法。
CompilerThreadPriority
-1
编译器线程的优先级(-1表示不变)
CompilerThreadStackSize
0
编译器线程的栈大小
CompressedClassSpaceSize
2^10
类指针压缩空间大小
ConcGCThreads
0
CMS并发阶段的线程数。默认值取决于JVM可用的CPU数。
ConditionalMoveLimit
3
Limit of ops to make speculative when using CMOVE
ContendedPaddingWidth
128
缓存行填充宽度。
ConvertSleepToYield
true
Converts sleep(0) to thread yield (may be off for SOLARIS to improve GUI)
ConvertYieldToSleep
false
Converts yield to a sleep of MinSleepInterval to simulate Win32 behavior (SOLARIS only)
CrashOnOutOfMemoryError
false
If this option is enabled, when an out-of-memory error occurs, the JVM crashes and produces text and binary crash files.
CreateMinidumpOnCrash
false
Create minidump on VM fatal error
CriticalJNINatives
true
check for critical JNI entry points
DTraceAllocProbes
false
Enable dtrace probes for object allocation
DTraceMethodProbes
false
Enable dtrace probes for method-entry and method-exit
DTraceMonitorProbes
false
Enable dtrace probes for monitor events
Debugging
false
set when executing debug methods in debug.ccp (to prevent triggering assertions)
DefaultMaxRAMFraction
4
Fraction (1/n) of real memory used for server class max heap
DefaultThreadPriority
-1
what native priority threads run at if not specified elsewhere (-1 means no change)
DeferPollingPageLoopCount
-1
(Unsafe,Unstable) Number of iterations in safepoint loop before changing safepoint polling page to RO
DeferThrSuspendLoopCount
4000
(Unstable) Number of times to iterate in safepoint loop before blocking VM threads
DeoptimizeRandom
false
deoptimize random frames on random exit from the runtime system
DisableAttachMechanism
false
禁止工具连接到JVM。禁用后将不能使用jcmd、jstack、jmap和jinfo等命令。
DisableExplicitGC
false
禁止显式调用GC。
DisplayVMOutputToStderr
false
If DisplayVMOutput is true, display all VM output to stderr
DisplayVMOutputToStdout
false
If DisplayVMOutput is true, display all VM output to stdout
DoEscapeAnalysis
true
开启逃逸分析
DontCompileHugeMethods
true
关闭大型方法的JIT编译。
DontYieldALot
false
Throw away obvious excess yield calls (for SOLARIS only)
DumpLoadedClassList
ㅤ
dump当前JVM装载的类列表
DumpReplayDataOnError
true
ㅤ
DumpSharedSpaces
false
Special 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.
EagerXrunInit
false
Eagerly initialize -Xrun libraries; allows startup profiling, but not all -Xrun libraries may support the state of the VM at this time
EliminateAllocationArraySizeLimit
64
大于该数量的元素的数组不会进行逃逸分析优化。
EliminateAllocations
true
开启标量替换。即允许将对象分配在栈。
EliminateAutoBox
true
Private flag to control optimizations for autobox elimination
EliminateLocks
true
开启锁消除优化。
EliminateNestedLocks
true
开启嵌套锁优化。
EmitSync
0
(Unsafe,Unstable) Controls emission of inline sync fast-path code
EnableContended
true
ㅤ
EnableResourceManagementTLABCache
true
ㅤ
EnableSharedLookupCache
true
ㅤ
EnableTracing
false
Enable event-based tracing
ErgoHeapSizeLimit
0
堆最大容量的默认值,如果设置的限制值比MaxRAM/MaxRAMFraction还小,就使用该参数指定的值。
ErrorFile
ㅤ
If an error occurs, save the error data to this file [default: ./hs_err_pid%p.log] (%p replaced with pid)
ErrorReportServer
ㅤ
Override built-in error report server address
EscapeAnalysisTimeout
20.00
ㅤ
EstimateArgEscape
true
Analyze bytecodes to estimate escape state of arguments
ExitOnOutOfMemoryError
false
When you enable this option, the JVM exits on the first occurrence of an out-of-memory error. It can be used if you prefer restarting an instance of the JVM rather than handling out of memory errors.
ExplicitGCInvokesConcurrent
false
如果在代码里显式调用System.gc()会做并行CMS GC。该参数在允许system GC且使用CMS GC有效
ExplicitGCInvokesConcurrentAndUnloadsClasses
false
与上面类似,额外增加对永久代的gc.
ExtendedDTraceProbes
false
启用dtrace影响性能的其他工具探测。
ExtraSharedClassListFile
ㅤ
ㅤ
FLSAlwaysCoalesceLarge
false
CMS: Larger free blocks are always available for coalescing
FLSCoalescePolicy
2
CMS: Aggression level for coalescing, increasing from 0 to 4
FLSLargestBlockCoalesceProximity
0.99
CMS: the smaller the percentage the greater the coalition force
FailOverToOldVerifier
true
如果新的Class校验器检查失败,则使用老的校验器。
FastTLABRefill
true
Use fast TLAB refill code
FenceInstruction
0
(Unsafe,Unstable) Experimental
FieldsAllocationStyle
1
字段排列方式。类型0, 引用在原始类型前面, 然后依次是longs/doubles, ints, shorts/chars, bytes, 最后是填充字段, 以满足对其要求。类型1, 引用在原始类型后面。类型2, JVM在布局时会尽量使父类对象和子对象挨在一起。
FilterSpuriousWakeups
true
Prevent spurious or premature wakeups from object.wait (Solaris only)
FlightRecorderOptions
ㅤ
ㅤ
ForceNUMA
false
Force NUMA optimizations on single-node/UMA systems
ForceTimeHighResolution
false
Using high time resolution(For Win32 only)
FreqInlineSize
325
经常被调用的方法的进行 inline 的最大 byte code 大小。
G1ConcMarkStepDurationMillis
10.00
Target duration of individual concurrent marking steps in milliseconds.
G1ConcRSHotCardLimit
4
The threshold that defines (>=) a hot card.
G1ConcRSLogCacheSize
10
"Log base 2 of the length of conc RS hot-card cache.
G1ConcRefinementGreenZone
0
The number of update buffers that are left in the queue by the concurrent processing threads. Will be selected ergonomically by default.
G1ConcRefinementRedZone
0
Maximum number of enqueued update buffers before mutator threads start processing new ones instead of enqueueing them. Will be selected ergonomically by default. Zero will disable concurrent processing.
G1ConcRefinementServiceIntervalMillis
300
The last concurrent refinement thread wakes up every specified number of milliseconds to do miscellaneous work.
G1ConcRefinementThreads
0
更新RSet的线程组数量。若未设置,则取ParallelGCThreads值。
G1ConcRefinementThresholdStep
0
Each time the rset update queue increases by this amount activate the next refinement thread if available. Will be selected ergonomically by default.
G1ConcRefinementYellowZone
0
Number of enqueued update buffers that will trigger concurrent processing. Will be selected ergonomically by default.
G1ConfidencePercent
50
Confidence coefficient for G1 pause prediction. Introduced in Java 6 Update 26.
G1HeapRegionSize
0
G1区块的大小, 取值为1M至32M. 其取值是要根据最小Heap大小划分出2048个区块。
G1HeapWastePercent
5
控制G1 GC不会回收的空闲内存比例,默认是堆内存的5%。G1 GC在回收过程中会回收所有Region的内存,并持续地做这个工作直到空闲内存比例达到设置的这个值为止,所以对于设置了较大值的堆内存来说,需要采用比较低的比例,这样可以确保较小部分的内存不被回收。
G1MixedGCCountTarget
8
当占用内存超过InitiatingHeapOccupancyPercent阀值时, 最多通过多少次Mixed GC来将内存控制在阀值之下。
G1RSetRegionEntries
0
Max number of regions for which we keep bitmaps.
G1RSetScanBlockSize
64
Size of a work unit of cards claimed by a worker thread during RSet scanning.
G1RSetSparseRegionEntries
0
Max number of entries per region in a sparse table.Will be set ergonomically by default.
G1RSetUpdatingPauseTimePercent
10
设置更新RSet的目标时间百分比。通过减小该值,G1通常会同时执行更多Rset更新工作。
G1RefProcDrainInterval
10
"The number of discovered reference objects to process before draining concurrent marking work queues.
G1ReservePercent
10
设置保留为false上限的堆的百分比(0到50),以减少G1收集器升级失败的可能性。
G1SATBBufferEnqueueingThresholdPercent
60
"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.
G1SATBBufferSize
1024
Number of entries in an SATB log buffer.
G1UpdateBufferSize
256
Size of an update buffer
G1UseAdaptiveConcRefinement
true
Select green, yellow and red zones adaptively to meet the the pause requirements.
GCDrainStackTargetSize
64
how many entries we’ll try to leave on the stack during parallel GC
GCHeapFreeLimit
2
Heap空闲空间的最低比例下限,当超过下限时,会抛出OOM(HeapSpace)异常
GCLockerEdenExpansionPercent
5
How much the GC can expand the eden by while the GC locker is active (as a percentage)
GCLockerInvokesConcurrent
false
加上之后,原本遇上JNI GCLocker只需要补偿YGC就够的,变成要执行YGC + CMS GC了。
GCLogFileSize
8192
GC日志最大尺寸。
GCPauseIntervalMillis
0
暂停间隔目标。
GCTaskTimeStampEntries
200
Number of time stamp entries per gc worker thread
GCTimeLimit
98
花费在GC上的时间上限,当超过该值时,会抛出OOM(HeapSpace)异常
GCTimeRatio
99
最大GC占总可用时间比例,若时间过长,会调整相应的空间大小(花费在GC上的时间比例不超过1/(1+GCTimeRatio))
HeapBaseMinAddress
2^31
OS specific low limit for heap base address
HeapDumpAfterFullGC
false
实现在Full GC后dump。
HeapDumpBeforeFullGC
false
实现在Full GC前dump。
HeapDumpOnOutOfMemoryError
false
在内存出现OOM时,把Heap转存到文件以便后续分析,文件名通常是java_pid.hprof,其中pid为该程序的进程号。
HeapDumpPath
ㅤ
heap转存文件的存储路径。
HeapFirstMaximumCompactionCount
3
The collection count for the first maximum compaction
HeapMaximumCompactionInterval
20
How often should we maximally compact the heap (not allowing any dead space)
HeapSizePerGCThread
87241520
Size of heap (bytes) per GC thread used in calculating the number of GC threads
IgnoreEmptyClassPaths
false
ㅤ
IgnoreUnrecognizedVMOptions
false
让JVM默默地忽略不可识别的选项,而不是崩溃。
IncreaseFirstTierCompileThresholdAt
50
ㅤ
IncrementalInline
true
do post parse inlining
InitialBootClassLoaderMetaspaceSize
4194304
这个参数决定了NoKlass Metaspace的第一个内存Block的大小,即2倍该值,同时为bootstrapClassLoader的第一块内存chunk分配了与该值的大小
InitialCodeCacheSize
2555904
设置初始CodeCache大小。
InitialHeapSize
0
JVM初始堆内存,可通过-Xms设置
InitialRAMFraction
64
Fraction (1/n) of real memory used for initial heap size
InitialSurvivorRatio
8
设置吞吐量垃圾收集器使用的初始幸存者空间比率(由-XX:+UseParallelGC和/或 - XX:+UseParallelOldGC选项启用)。
InitialTenuringThreshold
7
晋升年龄阈值的最小值。一个对象在Suvivor区移动达到晋升年龄阈值后下次MinorGC就进入老年代。JVM会根据YGC与FullGC的耗时来动态调整晋升年龄阈值。
InitiatingHeapOccupancyPercent
45
设置启动并发GC循环的堆占用百分比(0到100)。它由垃圾收集器使用,它根据整个堆的占用而触发并发GC循环,而不仅仅是其中一代(例如,G1垃圾收集器)。
Inline
true
启用方法内联。
InlineDataFile
ㅤ
ㅤ
InlineSmallCode
1000
设置应内联的已编译方法的最大代码大小(以字节为单位)。
InlineSynchronizedMethods
true
是否允许内联synchronized methods。
InsertMemBarAfterArraycopy
true
Insert memory barrier after arraycopy call
InteriorEntryAlignment
16
Code alignment for interior entry points in generated code (in bytes)
InterpreterProfilePercentage
33
解释器监控比率
JNIDetachReleasesMonitors
true
JNI DetachCurrentThread releases monitors owned by thread
JavaMonitorsInStackTrace
true
标记启用锁定行。
JavaPriority10_To_OSPriority
-1
Map Java priorities to OS priorities
JavaPriority1_To_OSPriority
-1
Map Java priorities to OS priorities
JavaPriority2_To_OSPriority
-1
Map Java priorities to OS priorities
JavaPriority3_To_OSPriority
-1
Map Java priorities to OS prioritiesMap Java priorities to OS priorities
JavaPriority4_To_OSPriority
-1
Map Java priorities to OS priorities
JavaPriority5_To_OSPriority
-1
Map Java priorities to OS priorities
JavaPriority6_To_OSPriority
-1
Map Java priorities to OS priorities
JavaPriority7_To_OSPriority
-1
Map Java priorities to OS priorities
JavaPriority8_To_OSPriority
-1
Map Java priorities to OS priorities
JavaPriority9_To_OSPriority
-1
Map Java priorities to OS priorities
LIRFillDelaySlots
false
fill delays on on SPARC with LIR
LargePageHeapSizeThreshold
134217728
Use large pages if max heap is at least this big
LargePageSizeInBytes
0
设置大内存页的大小,在启用大内存页支持(UseLargePages)时生效
LazyBootClassLoader
true
Enable/disable lazy opening of boot class path entries
LiveNodeCountInliningCutoff
40000
max number of live nodes in a method
LogCommercialFeatures
false
ㅤ
LoopMaxUnroll
16
ㅤ
LoopOptsCount
43
Set level of loop optimization for tier 1 compiles
LoopUnrollLimit
60
Unroll loop bodies with server compiler intermediate representation node count less than this value. The limit used by the server compiler is a function of this value, not the actual value. The default value varies with the platform on which the JVM is running.
LoopUnrollMin
4
ㅤ
LoopUnswitching
true
开启循环判断外提。这是一种编译器优化方法。
ManagementServer
false
Minimum number of unroll loop bodies before checking progress of rounds of unroll,optimize,..
MarkStackSize
4194304
Size of marking stack
MarkStackSizeMax
2^29
Max size of marking stack
MarkSweepAlwaysCompactCount
4
在没有明显的压缩效果之前,我们允许一些垃圾对象移动到内存区域的底部,即开始位置,每进行MarkSweepAlwaysCompactCount(默认4次)FGC时,再进行一次完全压缩。
MarkSweepDeadRatio
5
每经过MarkSweepAlwaysCompactCount次GC,就允许当前区域空间的MarkSweepDeadRatio%(TenuredSpace)/PermMarkSweepDeadRatio%(ContigPermSpace)大小被用来将死亡对象当做存活对象处理。
MaxBCEAEstimateLevel
5
Maximum number of nested calls that are analyzed by BC EA.
MaxBCEAEstimateSize
150
Maximum bytecode size of a method to be analyzed by BC EA.
MaxDirectMemorySize
0
指定直接内存的最大大小,若未指定,则默认与Java堆最大值一样。
MaxFDLimit
true
设置java进程可用文件描述符为操作系统允许的最大值。
MaxGCMinorPauseMillis
2^64-1
Adaptive size policy maximum GC minor pause time goal in msec
MaxGCPauseMillis
2^64-1
最大的GC暂停时间,如果时间过长,会相应调整空间的大小(单位为毫秒)
MaxHeapFreeRatio
70
堆最大空闲阈值。GC后如果发现堆内存空闲占预估堆的比例超过该值,则收缩堆内存的评估最大值。预估堆内存是堆大小动态调控的重要选项之一. 堆内存预估最大值一定小于或等于固定最大值(-Xmx指定的数值), 前者会根据使用情况动态调大或缩小, 以提高GC回收的效率。
MaxHeapSize
130862280
JVM最大堆内存,可通过-Xmx设置
MaxInlineLevel
9
针对嵌套调用的最大内联深度。
MaxInlineSize
35
方法可以被内联的最大bytecode大小。
MaxJNILocalCapacity
65536
ㅤ
MaxJavaStackTraceDepth
1024
该参数的目的是让JVM在实现 Throwable.fillInStackTrace()时把整个调用栈上所有Java栈帧的信息都记录下来。也就是说fillInStackTrace()在记录到最多MaxJavaStackTraceDepth层调用栈帧信息后就会停止爬栈。这是因为爬栈并将栈帧信息转换为Java对象(StackTraceElement)是个比较慢的动作,限制一下最大深度可以把fillInStackTrace()的最大开销给限制住。
MaxJumpTableSize
65000
Maximum number of targets in a generated jump table
MaxJumpTableSparseness
5
HotSpot JVM can generate jump tables even for switches with gaps and with outliers. -XX:MaxJumpTableSparseness controls how large the gaps can be. E.g. if there are labels from 1 to 10, then from 13 to 20 and the last label with the value 99 - JIT will generate a guard test for the value 99, and for the rest labels it will create a table.
MaxLabelRootDepth
1100
Maximum times call Label_Root to prevent stack overflow
MaxLoopPad
15
Align a loop if padding size in bytes is less or equal to this value
MaxMetaspaceExpansion
5452592
增大触发metaspace GC阈值的最大要求。
MaxMetaspaceFreeRatio
70
GC后触发metaspace扩容的最小空闲比例。
MaxMetaspaceSize
2^64-1
metaspace最大空间大小
MaxNewSize
2^64-1
年轻代的最大大小
MaxNodeLimit
80000
设置单个方法编译期间要使用的最大节点数。
MaxRAM
2^37
this parameter overrides the actual amount of physical RAM when calculating the heap limits basing on ergonomics.
MaxRAMFraction
4
默认值为4,即堆的最大容量是MaxRAM值的四分之一。
MaxRecursiveInlineLevel
1
the full stack is searched for recursive calls so mutual recursion may also now be blocked from going past MaxRecursiveInlineLevel.it counts both direct and indirect recursive calls.
MaxTenuringThreshold
15
晋升年龄阈值的最大值。一个对象在Suvivor区移动达到晋升年龄阈值后下次MinorGC就进入老年代。如果设置为0,则年轻代对象不经过Suvivor区,直接进入老年代,对于需要大量常驻内存的应用,这样做可以提高效率。如果将该值设置为一个将大的值,则年轻代对象会在Suvivor区进行多次复制,这样可以增加对象在年轻代存活时间,增加对象在年轻代被垃圾回收的概率,减少Full GC的频率,可以在某种程度上提高服务稳定性。
MaxTrivialSize
6
设置要内联的简单方法的最大字节码大小(以字节为单位)。
MaxVectorSize
32
Max vector size in bytes, actual size could be less depending on elements type
MetaspaceSize
21810376
metaspace初始大小,达到该值就会触发垃圾回收器进行类型卸载,同时GC会对该值进行调整:如果释放了大量空间,就适当降低该值;如果释放了很少空间,那么在不超过MaxMetaspaceSize时适当提高该值
MethodFlushing
true
Reclamation of zombie and not-entrant methods
MinHeapDeltaBytes
170392
为了防止频繁扩展内存代空间,每次扩展内存代时都有一个最小值,由该参数定义。
MinHeapFreeRatio
40
堆最小空闲阈值。GC后如果发现空闲堆内存占到整个预估堆内存的N%(百分比), 则放大堆内存的预估最大值。
MinInliningThreshold
250
方法可以被内联的最小调用次数。
MinJumpTableSize
10
case的数量小于这个不会生成jump_table。
MinMetaspaceExpansion
340784
增大触发metaspace GC阈值的最小要求。
MinMetaspaceFreeRatio
40
触发metaspaceGC的最小空闲阈值。表示每次GC完之后,假设我们允许接下来metaspace可以继续被commit的内存占到了被commit之后总共committed的内存量的MinMetaspaceFreeRatio%,如果这个总共被committed的量比当前触发metaspaceGC的阈值要大,那么将尝试做扩容,也就是增大触发metaspaceGC的阈值,不过这个增量至少是MinMetaspaceExpansion才会做,不然不会增加这个阈值。这个参数主要是为了避免触发metaspaceGC的阈值和gc之后committed的内存的量比较接近,于是将这个阈值进行扩大。一般情况下在gc完之后,如果被committed的量还是比较大的时候,换个说法就是离触发metaspaceGC的阈值比较接近的时候,这个调整会比较明显。
MinRAMFraction
2
JVM需要确保预留足够的内存给操作系统使用。JVM占用的内容最大不超过物理内存除以该值。
MinSurvivorRatio
3
Minimum ratio of young generation/survivor space size
MinTLABSize
2048
Minimum allowed TLAB size (in bytes)
MonitorBound
0
ㅤ
MonitorInUseLists
false
在STW时,所有的Java线程都会暂停在“安全点(SafePoint)”,此时VMThread通过对所有Monitor的遍历。该值表示启用对当前正在“使用”中的Monitor子序列进行遍历,从而得到哪些未被使用的“Monitor”作为降级对象。
MultiArrayExpandLimit
6
Maximum number of individual allocations in an inline-expanded multianewarray instruction
MustCallLoadClassInternal
false
loadClassInternal() 替代 loadClass()
NUMAChunkResizeWeight
20
“Percentage (0-100) used to weight the current sample when”computing exponentially decaying average for" AdaptiveNUMAChunkSizing
NUMAInterleaveGranularity
2097152
Granularity to use for NUMA interleaving on Windows OS
NUMAPageScanRate
256
Maximum number of pages to include in the page scan procedure
NUMASpaceResizeRate
2^30
Do not reallocate more that this amount per collection
NUMAStats
false
Print NUMA stats in detailed heap information
NativeMemoryTracking
off
该参数开启NMT。Native Memory Tracking (NMT) 是Hotspot VM用来分析VM内部内存使用情况的一个功能。
NeedsDeoptSuspend
false
True for register window machines (sparc/ia64)
NeverActAsServerClassMachine
false
Never act like a server-class machine
NeverTenure
false
永不晋升
NewRatio
2
年轻代与老年代的比例
NewSize
1363144
默认年轻代的大小
NewSizeThreadIncrease
5320
允许您指定每个活动线程会增加多少初期对象空间。这个选项在调节由于线程增加而增加的分配率时可能会有用。
NmethodSweepActivity
10
ㅤ
NmethodSweepCheckInterval
5
Compilers wake up every n seconds to possibly sweep nmethods
NmethodSweepFraction
16
Number of invocations of sweeper to cover all nmethods
NodeLimitFudgeFactor
2000
Fudge Factor for certain optimizations
NumberOfGCLogFiles
0
Number of gclog files in rotation, Default: 0, no rotation
NumberOfLoopInstrToAlign
4
Number of first instructions in a loop to align
ObjectAlignmentInBytes
8
Default object alignment in bytes, 8 is minimum
OldPLABSize
1024
Size of old gen promotion labs (in HeapWords)
OldPLABWeight
50
Percentage (0-100) used to weight the current sample when computing exponentially decaying average for resizing CMSParPromoteBlocksToClaim
OldSize
5452592
老年代的默认大小
OmitStackTraceInFastThrow
true
Omit backtraces for some ‘hot’ exceptions in optimized code
OnError
ㅤ
Run user-defined commands on fatal error
OnOutOfMemoryError
ㅤ
指定一个脚本路径,当OOM时,去执行该脚本。
OnStackReplacePercentage
140
方法中循环执行部分代码的执行次数触发OSR编译时的阈值。
OptimizeFill
true
convert fill/copy loops into intrinsic
OptimizePtrCompare
true
Use escape analysis to optimize pointers compare
OptimizeStringConcat
true
启用String串联操作的优化。
OptoBundling
false
Generate nops to fill i-cache lines
OptoLoopAlignment
16
Align inner loops to zero relative to this modulus
OptoScheduling
false
Instruction Scheduling after register allocation
PLABWeight
75
Percentage (0-100) used to weight the current sample when computing exponentially decaying average for ResizePLAB.
PSChunkLargeArrays
true
true: process large arrays in chunks
ParGCArrayScanChunk
50
Scan a subset and push remainder, if array is bigger than this
ParGCDesiredObjsFromOverflowList
20
The desired number of objects to claim from the overflow list
ParGCTrimOverflow
true
Eagerly trim the local overflow lists (when ParGCUseLocalOverflow
ParGCUseLocalOverflow
false
Instead of a global overflow list, use local overflow stacks
ParallelGCBufferWastePct
10
wasted fraction of parallel allocation buffer
ParallelGCThreads
0
并行垃圾回收的线程数。默认的配置是如果处理器的个数小于8,那么就是处理器的个数;如果处理器大于8,它的值就是3+5N/8。
ParallelGCVerbose
false
Verbose output for parallel GC.
ParallelOldDeadWoodLimiterMean
50
The mean used by the par compact dead wood limiter (a number between 0-100).
ParallelOldDeadWoodLimiterStdDev
80
The standard deviation used by the par compact dead wood limiter (a number between 0-100).
ParallelRefProcBalancingEnabled
true
Enable balancing of reference processing queues
ParallelRefProcEnabled
false
并行处理Reference,加快处理速度,缩短耗时。
PartialPeelAtUnsignedTests
true
Partial peel at unsigned tests if no signed test exists
PartialPeelLoop
true
Partial peel (rotate) loops
PartialPeelNewPhiDelta
0
Additional phis that can be created by partial peeling
PausePadding
1
How much buffer to keep for pause time
PerBytecodeRecompilationCutoff
200
Per-BCI limit on repeated recompilation (-1=>‘Inf’)
PerBytecodeTrapLimit
4
Limit on traps (of one kind) at a particular BCI
PerMethodRecompilationCutoff
400
After recompiling N times, stay in the interpreter (-1=>‘Inf’)
PerMethodTrapLimit
100
Limit on traps (of one kind) in a method (includes inlines)
PerfAllowAtExitRegistration
false
Allow registration of atexit() methods
PerfBypassFileSystemCheck
false
Bypass Win32 file system criteria checks (Windows Only)
PerfDataMemorySize
32768
Size of performance data memory region. Will be rounded up to a multiple of the native os page size.
PerfDataSamplingInterval
50
Data sampling interval in milliseconds
PerfDataSaveFile
ㅤ
Save PerfData memory to the specified absolute pathname, %p in the file name if present will be replaced by pid
PerfDataSaveToFile
false
Save PerfData memory to hsperfdata_ file on exit
PerfDisableSharedMem
false
Store performance data in standard memory
PerfMaxStringConstLength
1024
Maximum PerfStringConstant string length before truncation
PreInflateSpin
10
Number of times to spin wait before inflation
PreferInterpreterNativeStubs
false
Use always interpreter stubs for native methods invoked via interpreter
PrefetchCopyIntervalInBytes
-1
How far ahead to prefetch destination area (<= 0 means off)
PrefetchFieldsAhead
-1
How many fields ahead to prefetch in oop scan (<= 0 means off)
PrefetchScanIntervalInBytes
-1
How far ahead to prefetch scan area (<= 0 means off)
PreserveAllAnnotations
false
Preserve RuntimeInvisibleAnnotations as well as RuntimeVisibleAnnotations
PreserveFramePointer
false
ㅤ
PretenureSizeThreshold
0
设置让大于该阈值的对象直接分配在老年代(只对Serial、ParNew收集器有效),单位为字节
PrintAdaptiveSizePolicy
false
允许打印有关自适应生成大小的信息。
PrintCMSInitiationStatistics
false
Statistics for initiating a CMS collection
PrintCMSStatistics
0
Statistics for CMS
PrintClassHistogram
false
在Control+C事件(SIGTERM)之后启用类实例直方图的打印。
PrintClassHistogramAfterFullGC
false
在FullGC后打印类实例直方图。
PrintClassHistogramBeforeFullGC
false
在FullGC前打印类实例直方图。
PrintCodeCache
false
在jvm停止的时候打印出codeCache的使用情况。
PrintCodeCacheOnCompilation
false
用于在方法每次被编译时输出code cache的使用情况。
PrintCommandLineFlags
false
Print flags specified on command line or set by ergonomics
PrintCompilation
false
每次编译方法时,通过向控制台打印消息,从JVM启用详细诊断输出。这使您可以查看实际编译的方法。
PrintConcurrentLocks
false
java.util.concurrent在Control+C事件(SIGTERM)之后启用锁的打印。设置此选项等同于运行jstack -l命令或jcmd pid Thread.print -l命令,其中pid是当前Java进程标识符。
PrintFLSCensus
0
Census for CMS’ FreeListSpace
PrintFLSStatistics
0
若该参数不为0,那么每次GC前后都会调用reportFreeListStatistics()方法打印出free list的统计信息。
PrintFlagsFinal
false
打印出XX选项在运行程序时生效的值
PrintFlagsInitial
false
打印出所有XX选项的默认值
PrintGC
false
等同于-verbose:gc表示打开简化的GC日志
PrintGCApplicationConcurrentTime
false
允许打印自上次暂停后经过的时间(例如,GC暂停)。
PrintGCApplicationStoppedTime
false
打印GC时线程的停顿时间
PrintGCCause
true
Include GC cause in GC logging
PrintGCDateStamps
false
打印出GC发生的具体时间
PrintGCDetails
false
在发生垃圾回收时打印内存回收日志,并在进程退出时输出当前内存各区域分配情况。
PrintGCID
false
ㅤ
PrintGCTaskTimeStamps
false
允许为每个GC工作线程任务打印时间戳。
PrintGCTimeStamps
false
打印GC发生时相对于JVM启动时的时间。
PrintHeapAtGC
false
每次GC前和GC后,都打印堆信息。
PrintHeapAtGCExtended
false
Prints extended information about the layout of the heap when -XX:+PrintHeapAtGC is set
PrintHeapAtSIGBREAK
true
Print heap layout in response to SIGBREAK
PrintJNIGCStalls
false
Print diagnostic message when GC is stalled by JNI critical section
PrintJNIResolving
false
Used to implement -v:jni
PrintOldPLAB
false
Print (old gen) promotion labs sizing decisions
PrintOopAddress
false
Always print the location of the oop
PrintPLAB
false
Print (survivor space) promotion labs sizing decisions
PrintParallelOldGCPhaseTimes
false
Print the time taken by each parallel old gc phase. PrintGCDetails must also be enabled.
PrintPromotionFailure
false
晋升失败时打印日志。
PrintReferenceGC
false
Print times spent handling reference objects during GC (enabled only when PrintGCDetails)
PrintSafepointStatistics
false
print statistics about safepoint synchronization
PrintSafepointStatisticsCount
300
total number of safepoint statistics collected before printing them out
PrintSafepointStatisticsTimeout
-1
print safepoint statistics only when safepoint takes more than PrintSafepointSatisticsTimeout in millis
PrintSharedArchiveAndExit
false
ㅤ
PrintSharedDictionary
false
ㅤ
PrintSharedSpaces
false
Print usage of shared spaces
PrintStringDeduplicationStatistics
false
打印详细的重复数据删除统计信息。
PrintStringTableStatistics
false
print statistics about the StringTable and SymbolTable
PrintTLAB
false
Print various TLAB related information
PrintTenuringDistribution
false
让JVM在每次MinorGC后打印出当前使用的Survivor中对象的年龄分布。
PrintTieredEvents
false
Print tiered events notifications
PrintVMOptions
false
Print flags that appeared on the command line
PrintVMQWaitTime
false
Prints out the waiting time in VM operation queue
PrintWarnings
true
Prints JVM warnings to output stream
ProcessDistributionStride
4
Stride through processors when distributing processes
ProfileInterpreter
true
Profile at the bytecode level during interpretation
ProfileIntervals
false
Prints profiles for each interval (see ProfileIntervalsTicks)
ProfileIntervalsTicks
100
# of ticks between printing of interval profile (+ProfileIntervals)
ProfileMaturityPercentage
20
number of method invocations/branches (expressed as % of CompileThreshold) before using the method’s profile
ProfileVM
false
Profiles ticks that fall within VM (either in the VM Thread or VM code called through stubs)
ProfilerPrintByteCodeStatistics
false
Prints byte code statictics when dumping profiler output
ProfilerRecordPC
false
Collects tick for each 16 byte interval of compiled code
PromotedPadding
3
How much buffer to keep for promotion failure
QueuedAllocationWarningCount
0
Number of times an allocation that queues behind a GC will retry before printing a warning
RTMRetryCount
5
RTM锁定代码将在中止或忙碌时重试此选项指定的次数,然后再回退到正常锁定机制。必须启用UseRTMLocking才能生效。
RangeCheckElimination
true
Split loop iterations to eliminate range checks
ReadPrefetchInstr
0
Prefetch instruction to prefetch ahead
ReassociateInvariants
true
Enable reassociation of expressions with loop invariants.
ReduceBulkZeroing
true
When bulk-initializing, try to avoid needless zeroing
ReduceFieldZeroing
true
When initializing fields, try to avoid needless zeroing
ReduceInitialCardMarks
true
When initializing fields, try to avoid needless card marks
ReduceSignalUsage
false
Reduce the use of OS signals in Java and/or the VM
RefDiscoveryPolicy
0
Whether reference-based(0) or referent-based(1)
ReflectionWrapResolutionErrors
true
Temporary flag for transition to AbstractMethodError wrapped in InvocationTargetException.
RegisterFinalizersAtInit
true
Register finalizable objects at end of Object. or after allocation
RelaxAccessControlCheck
false
在Class校验器中,放松对访问控制的检查,作用与reflection里的setAccessible类似。
ReplayDataFile
ㅤ
ㅤ
RequireSharedSpaces
false
Require shared spaces in the permanent generation
ReservedCodeCacheSize
50331648
设置JIT编译代码的最大代码缓存大小(以字节为单位)。
ResizeOldPLAB
true
Dynamically resize (old gen) promotion labs
ResizePLAB
true
Dynamically resize (survivor space) promotion labs
ResizeTLAB
true
Dynamically resize tlab size for threads
RestoreMXCSROnJNICalls
false
Restore MXCSR when returning from JNI calls
RestrictContended
true
ㅤ
RewriteBytecodes
true
Allow rewriting of bytecodes (bytecodes are not immutable)
RewriteFrequentPairs
true
Rewrite frequently used bytecode pairs into a single bytecode
SafepointPollOffset
256
Offset added to polling address (Intel only)
SafepointSpinBeforeYield
2000
(Unstable)
SafepointTimeout
false
启用线程Safepoint超时
SafepointTimeoutDelay
10000
线程Safepoint超时时间,单位毫秒
ScavengeBeforeFullGC
true
在每个完整GC之前启用年轻代的GC。
SelfDestructTimer
0
Will cause VM to terminate after a given time (in minutes) (0 means off)
SharedBaseAddress
2^35
ㅤ
SharedClassListFile
ㅤ
ㅤ
SharedMiscCodeSize
122880
Size of the shared code area adjacent to the heap (in bytes)
SharedMiscDataSize
4194304
Size of the shared data area adjacent to the heap (in bytes)
SharedReadOnlySize
16777216
Size of read-only space in permanent generation (in bytes)
SharedReadWriteSize
16777216
Size of read-write space in permanent generation (in bytes)"
ShowMessageBoxOnError
false
Keep process alive on VM fatal error
SoftRefLRUPolicyMSPerMB
1000
设置软引用在上次使用后在堆上保持活动状态的时间(以毫秒为单位)。
SpecialEncodeISOArray
true
ㅤ
SplitIfBlocks
true
Clone compares and control flow through merge points to fold some branches
StackRedPages
1
Number of red zone (unrecoverable overflows) pages
StackShadowPages
20
Number of shadow zone (for overflow checking) pages this should exceed the depth of the VM and native call stack
StackTraceInThrowable
true
ㅤ
StackYellowPages
2
Number of yellow zone (recoverable overflows) pages
StartAttachListener
false
Always start Attach Listener at VM startup
StarvationMonitorInterval
200
Pause between each check in ms
StressLdcRewrite
false
Force ldc -> ldc_w rewrite during RedefineClasses
StringDeduplicationAgeThreshold
3
String达到指定年龄的对象被视为重复数据删除的候选对象。对象的年龄是对垃圾收集存活多少次的度量。
StringTableSize
60013
Number of buckets in the interned String table
SuppressFatalErrorMessage
false
Do NO Fatal Error report [Avoid deadlock]
SurvivorPadding
3
How much buffer to keep for survivor overflow
SurvivorRatio
8
Eden Space与Suvivor Space的比例,默认配置下,每个Suvivor Space占整个年轻代的1/10
SuspendRetryCount
50
Maximum retry count for an external suspend request
SuspendRetryDelay
5
Milliseconds to delay per retry (* current_retry_count)
SyncFlags
0
(Unsafe,Unstable) Experimental Sync flags
SyncKnobs
ㅤ
(Unstable) Various monitor synchronization tunables
SyncVerbose
0
(Unstable)
TLABAllocationWeight
35
Allocation averaging weight
TLABRefillWasteFraction
64
Max TLAB waste at a refill (internal fragmentation)
TLABSize
0
设置线程局部分配缓冲区(TLAB)的初始大小(以字节为单位)。
TLABStats
true
Print various TLAB related information
TLABWasteIncrement
4
Increment allowed waste at slow allocation
TLABWasteTargetPercent
1
Percentage of Eden that can be wasted
TargetPLABWastePct
10
target wasted space in last buffer as pct of overall allocation
TargetSurvivorRatio
50
设置年轻垃圾收集后使用的幸存者空间(0到100)的所需百分比。
TenuredGenerationSizeIncrement
20
Adaptive size percentage change in tenured generation
TenuredGenerationSizeSupplement
80
Supplement to TenuredGenerationSizeIncrement used at startup
TenuredGenerationSizeSupplementDecay
2
Decay factor to TenuredGenerationSizeIncrement
ThreadPriorityPolicy
0
0 : 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.
ThreadPriorityVerbose
false
Print priority changes
ThreadSafetyMargin
52428800
Thread safety margin is used on fixed-stack LinuxThreads (on Linux/x86 only) to prevent heap-stack collision. Set to 0 to disable this feature
ThreadStackSize
1024
线程的栈大小(字节数),也可用-Xss来配置
ThresholdTolerance
10
Allowed collection cost difference between generations
Tier0BackedgeNotifyFreqLog
10
Interpreter (tier 0) invocation notification frequency.
Tier0InvokeNotifyFreqLog
7
Interpreter (tier 0) invocation notification frequency.
Tier0ProfilingStartPercentage
200
Start profiling in interpreter if the counters exceed tier 3 thresholds by the specified percentage
Tier23InlineeNotifyFreqLog
20
Inlinee invocation (tiers 2 and 3) notification frequency
Tier2BackEdgeThreshold
0
Back edge threshold at which tier 2 compilation is invoked
Tier2BackedgeNotifyFreqLog
14
C1 without MDO (tier 2) invocation notification frequency.
Tier2CompileThreshold
0
threshold at which tier 2 compilation is invoked
Tier2InvokeNotifyFreqLog
11
C1 without MDO (tier 2) invocation notification frequency.
Tier3BackEdgeThreshold
60000
Back edge threshold at which tier 3 OSR compilation is invoked
Tier3BackedgeNotifyFreqLog
13
C1 with MDO profiling (tier 3) invocation notification frequency.
Tier3CompileThreshold
2000
Threshold at which tier 3 compilation is invoked (invocation minimum must be satisfied.
Tier3DelayOff
2
If C2 queue size is less than this amount per compiler thread allow methods compiled at tier 2 transition to tier 3
Tier3DelayOn
5
If C2 queue size grows over this amount per compiler thread stop compiling at tier 3 and start compiling at tier 2
Tier3InvocationThreshold
200
Compile if number of method invocations crosses this threshold
Tier3InvokeNotifyFreqLog
10
C1 with MDO profiling (tier 3) invocation notification frequency.
Tier3LoadFeedback
5
Tier 3 thresholds will increase twofold when C1 queue size reaches this amount per compiler thread
Tier3MinInvocationThreshold
100
Minimum invocation to compile at tier 3
Tier4BackEdgeThreshold
40000
Back edge threshold at which tier 4 OSR compilation is invoked
Tier4CompileThreshold
15000
Threshold at which tier 4 compilation is invoked (invocation minimum must be satisfied.
Tier4InvocationThreshold
5000
Compile if number of method invocations crosses this threshold
Tier4LoadFeedback
3
Tier 4 thresholds will increase twofold when C2 queue size reaches this amount per compiler thread
Tier4MinInvocationThreshold
600
Minimum invocation to compile at tier 4
TieredCompilation
true
启用分层编译。
TieredCompileTaskTimeout
50
Kill compile task if method was not used within given timeout in milliseconds
TieredRateUpdateMaxTime
25
Maximum rate sampling interval (in milliseconds)
TieredRateUpdateMinTime
1
Minimum rate sampling interval (in milliseconds)
TieredStopAtLevel
4
Stop at given compilation level
TimeLinearScan
false
detailed timing of LinearScan phases
TraceBiasedLocking
false
Trace biased locking in JVM
TraceClassLoading
false
监控类的加载
TraceClassLoadingPreorder
false
跟踪所有加载的引用类
TraceClassPaths
false
ㅤ
TraceClassResolution
false
跟踪常量池的变化
TraceClassUnloading
false
跟踪类的卸载
TraceDynamicGCThreads
false
Trace the dynamic GC thread usage
TraceGen0Time
false
Trace accumulated time for Gen 0 collection
TraceGen1Time
false
Trace accumulated time for Gen 1 collection
TraceJVMTI
ㅤ
Trace flags for JVMTI functions and events
TraceLoaderConstraints
false
跟踪类加载器约束的相关信息
TraceMetadataHumongousAllocation
false
ㅤ
TraceMonitorInflation
false
Trace monitor inflation in JVM
TraceParallelOldGCTasks
false
Trace multithreaded GC activity
TraceRedefineClasses
0
Trace level for JVMTI RedefineClasses
TraceSafepointCleanupTime
false
print the break down of clean up tasks performed during safepoint
TraceSharedLookupCache
false
ㅤ
TraceSuspendWaitFailures
false
Trace external suspend wait failures
TrackedInitializationLimit
50
When initializing fields, track up to this many words
TransmitErrorReport
false
Enable error report transmission on erroneous termination
TrapBasedNullChecks
false
ㅤ
TrapBasedRangeChecks
false
ㅤ
TypeProfileArgsLimit
2
ㅤ
TypeProfileLevel
111
ㅤ
TypeProfileMajorReceiverPercent
90
% of major receiver type to all profiled receivers
TypeProfileParmsLimit
2
ㅤ
TypeProfileWidth
2
number of receiver types to record in call/cast profile
UnguardOnExecutionViolation
0
Unguard page and retry on no-execute fault (Win32 only) 0=off, 1=conservative, 2=aggressive
UnlinkSymbolsALot
false
unlink unreferenced symbols from the symbol table at safepoints
Use486InstrsOnly
false
Use 80486 Compliant instruction subset
UseAES
false
为Intel,AMD和SPARC硬件启用基于硬件的AES内在函数。
UseAESIntrinsics
false
同上一起使用。
UseAVX
99
Highest supported AVX instructions set on x86/x64
UseAdaptiveGCBoundary
false
Allow young-old boundary to move
UseAdaptiveGenerationSizePolicyAtMajorCollection
true
Use adaptive young-old sizing policies at major collections
UseAdaptiveGenerationSizePolicyAtMinorCollection
true
Use adaptive young-old sizing policies at minor collections
UseAdaptiveNUMAChunkSizing
true
Enable adaptive chunk sizing for NUMA
UseAdaptiveSizeDecayMajorGCCost
true
Adaptive size decays the major cost for long major intervals
UseAdaptiveSizePolicy
true
使用自适应自动调整空间大小,即JVM会自动调整年轻代与老年代的比例、Eden Space与Suvivor Space比例来达到性能目标,GC处理优先级是MaxGCPauseMillis最高,GCTimeRatio次之,其它的空间大小配置优先级最低
UseAdaptiveSizePolicyFootprintGoal
true
Use adaptive minimum footprint as a goal
UseAdaptiveSizePolicyWithSystemGC
false
Use statistics from System.GC for adaptive size policy
UseAddressNop
false
Use ‘0F 1F [addr]’ NOP instructions on x86 cpus
UseAltSigs
false
为了防止与其他发送信号的应用程序冲突,允许使用候补信号替代 SIGUSR1和SIGUSR2
UseAutoGCSelectPolicy
false
Use automatic collection selection policy
UseBMI1Instructions
false
ㅤ
UseBMI2Instructions
false
ㅤ
UseBiasedLocking
true
启用偏向锁
UseBimorphicInlining
true
Profiling based inlining for two receivers
UseBoundThreads
true
绑定所有的用户线程到内核线程, 减少线程进入饥饿状态(得不到任何cpu time)的次数。
UseBsdPosixThreadCPUClocks
true
ㅤ
UseCLMUL
false
ㅤ
UseCMSBestFit
true
Use CMS best fit allocation strategy
UseCMSCollectionPassing
true
Use passing of collection from background to foreground
UseCMSCompactAtFullCollection
true
CMS在FullGC前进行老年代的内存碎片整理
UseCMSInitiatingOccupancyOnly
false
CMS会根据历史记录,预测老年代还需要多久填满及进行一次回收所需要的时间。在老年代空间用完之前,CMS可以根据自己的预测自动执行垃圾回收。若设置该值为true,则关闭该预测。
UseCRC32Intrinsics
false
ㅤ
UseCodeCacheFlushing
true
是否在code cache满的时候先尝试清理一下,如果还是不够用再关闭编译。
UseCompiler
true
use compilation
UseCompilerSafepoints
true
Stop at safepoints in compiled code
UseCompressedClassPointers
false
启用压缩类指针(对象中指向类元数据的指针会被压缩成32位)
UseCompressedOops
false
启用压缩对象指针(堆中对象指针会被压缩成32位)
UseConcMarkSweepGC
false
开启CMS收集器收集老年代,新生代默认使用并行收集器。
UseCondCardMark
false
在更新卡表之前,可以检查卡是否已经标记。
UseCountLeadingZerosInstruction
false
Use count leading zeros instruction
UseCountTrailingZerosInstruction
false
ㅤ
UseCountedLoopSafepoints
false
强制在Counted loop循环回跳之前插入Safepoint,也就是说即使循环比较短,JVM也会帮忙插入Safepoint了,用于防止大循环执行时间过长导致进入Safepoint卡住的问题。但是这个参数在JDK8上是有Bug的,可能会导致JVM Crash,而且是到JDK9才修复的,具体参考JDK-8161147。
UseCounterDecay
true
开启方法调用计数器的热度衰减。
UseDivMod
true
Use combined DivMod instruction if available
UseDynamicNumberOfGCThreads
false
Dynamically choose the number of parallel threads parallel gc will use
UseFPUForSpilling
false
Spill integer registers to FPU instead of stack when possible
UseFastAccessorMethods
true
优化原始类型的getter方法性能
UseFastEmptyMethods
true
Use fast method entry code for empty methods
UseFastJNIAccessors
true
Use optimized versions of GetField
UseFastStosb
false
Use fast-string operation for zeroing: rep stosb
UseG1GC
false
允许使用垃圾优先(G1)垃圾收集器。它是一个服务器式垃圾收集器,针对具有大量RAM的多处理器机器。它以高概率满足GC暂停时间目标,同时保持良好的吞吐量。G1收集器推荐用于需要大堆(大小约为6 GB或更大)且GC延迟要求有限的应用(稳定且可预测的暂停时间低于0.5秒)。
UseGCLogFileRotation
false
Prevent large gclog file for long running app. Requires -Xloggc:
UseGCOverheadLimit
true
允许使用策略来限制在OutOfMemoryError引发异常之前JVM在GC上花费的时间比例。
UseGCTaskAffinity
false
保证每次工作线程被唤醒的时候争取拿到上次没有完成的工作。
UseHeavyMonitors
false
use heavyweight instead of lightweight Java monitors
UseHugeTLBFS
false
ㅤ
UseInlineCaches
true
Use Inline Caches for virtual calls
UseInterpreter
true
Use interpreter for non-compiled methods
UseJumpTables
true
Use JumpTables instead of a binary search tree for switches
UseLWPSynchronization
true
使用轻量级进程(内核线程)替换线程同步。
UseLargePages
false
启用大内存页支持
UseLargePagesInMetaspace
false
在metaspace启用大内存页,依赖于UseLargePages参数
UseLargePagesIndividualAllocation
false
Allocate large pages individually for better affinity
UseLockedTracing
false
Use locked-tracing when doing event-based tracing
UseLoopCounter
true
Increment invocation counter on backward branch
UseLoopInvariantCodeMotion
true
ㅤ
UseLoopPredicate
true
Generate a predicate to select fast/slow loop versions
UseMathExactIntrinsics
true
ㅤ
UseMaximumCompactionOnSystemGC
true
In the Parallel Old garbage collector maximum compaction for a system GC
UseMembar
true
(Unstable) Issues membars on thread state transitions
UseMontgomeryMultiplyIntrinsic
false
ㅤ
UseMontgomerySquareIntrinsic
false
ㅤ
UseMulAddIntrinsic
false
ㅤ
UseMultiplyToLenIntrinsic
false
ㅤ
UseNUMA
false
通过增加应用程序对低延迟内存的使用,在具有非均匀内存架构(NUMA)的计算机上实现应用程序的性能优化。
UseNUMAInterleaving
false
Interleave memory across NUMA nodes if available
UseNewLongLShift
false
Use optimized bitwise shift left
UseOSErrorReporting
false
Let VM fatal error propagate to the OS (ie. WER on Windows)
UseOldInlining
true
Enable the 1.3 inlining strategy
UseOnStackReplacement
true
Use on stack replacement, calls runtime if invoc. counter overflows in loop
UseOnlyInlinedBimorphic
true
Don’t use BimorphicInlining if can’t inline a second method
UseOprofile
false
ㅤ
UseOptoBiasInlining
true
Generate biased locking code in C2 ideal graph
UsePSAdaptiveSurvivorSizePolicy
true
Use adaptive survivor sizing policies
UseParNewGC
false
针对年轻代使用多线程垃圾收集器(ParNew),可与CMS同时使用。在serial基础上实现的多线程收集器。
UseParallelGC
false
针对年轻代使用并行垃圾收集器(Parallel Scavenge) ,可以并行多个垃圾收集线程,但此时用户线程必须停止。不能与CMS一起使用,系统吞吐量使用优化,会有较长时间的应用暂停,后台系统任务可以使用该GC。
UseParallelOldGC
false
允许将并行垃圾收集器用于完整的GC。
UsePerfData
true
Flag to disable jvmstat instrumentation for performance testing and problem isolation purposes.
UsePopCountInstruction
false
Use population count instruction
UseRDPCForConstantTableBase
false
Use Sparc RDPC instruction for the constant table base.
UseRTMDeopt
false
根据中止率自动调谐RTM锁定。该比率由-XX:RTMAbortRatio选项指定。如果中止事务的数量超过中止率,则包含锁定的方法将被取消优化并重新编译,并将所有锁定为正常锁定。必须启用UseRTMLockingf才生效。
UseRTMLocking
false
为所有膨胀的锁生成受限制的事务性内存(RTM)锁定代码,使用正常的锁定机制作为回退处理程序。RTM是英特尔TSX的一部分,它是x86指令集扩展,有助于创建多线程应用程序。RTM引入了新的指示XBEGIN,XABORT,XEND,和XTEST。
UseSHA
false
为SPARC硬件启用SHA加密散列函数的基于硬件的内在函数。
UseSHA1Intrinsics
false
为SHA-1加密哈希函数启用内在函数。
UseSHA256Intrinsics
false
为SHA-224和SHA-256加密哈希函数启用内在函数。
UseSHA512Intrinsics
false
为SHA-384和SHA-512加密散列函数启用内在函数。
UseSHM
false
使JVM能够使用共享内存来设置大页面。
UseSSE
99
ㅤ
UseSSE42Intrinsics
false
ㅤ
UseSerialGC
false
允许使用串行垃圾收集器。对于不需要垃圾收集的任何特殊功能的小型和简单应用程序,这通常是最佳选择。
UseSharedSpaces
true
Use shared spaces in the permanent generation
UseSignalChaining
true
Use signal-chaining to invoke signal handlers installed by the application (Solaris & Linux only)
UseSquareToLenIntrinsic
false
ㅤ
UseStoreImmI16
true
Use store immediate 16-bits value instruction on x86
UseStringDeduplication
false
启用字符串重复数据删除。要使用此选项,必须启用垃圾优先(G1)垃圾收集器。字符串重复数据删除String通过利用许多String对象相同的事实来减少Java堆上对象的内存占用。String相同的String对象可以指向并共享相同的字符数组,而不是每个对象指向其自己的字符数组。
UseSuperWord
true
允许将标量操作转换为超级字操作。UseSuperWord会在字节运算时启用布隆过滤器之类的特性,能在haswell架构的cpu上提高2倍以上的速度。
UseTLAB
true
允许在年轻代空间中使用线程局部分配块(TLAB)。
UseThreadPriorities
true
使用本地线程的优先级。
UseTypeProfile
true
Check interpreter profile for historically monomorphic calls
UseTypeSpeculation
true
ㅤ
UseUnalignedLoadStores
false
Use SSE2 MOVDQU instruction for Arraycopy
UseVMInterruptibleIO
false
在solaris中,允许运行时中断线程。
UseXMMForArrayCopy
false
Use SSE2 MOVQ instruction for Arraycopy
UseXmmI2D
false
Use SSE2 CVTDQ2PD instruction to convert Integer to Double
UseXmmI2F
false
Use SSE2 CVTDQ2PS instruction to convert Integer to Float
UseXmmLoadAndClearUpper
true
Load low part of XMM register and clear upper part
UseXmmRegToRegMoveAll
false
Copy all XMM register bits when moving value between registers
VMThreadHintNoPreempt
false
(Solaris only) Give VM thread an extra quanta
VMThreadPriority
-1
The native priority at which the VM thread should run (-1 means no change)
VMThreadStackSize
1024
Non-Java Thread Stack Size (in Kbytes)
ValueMapInitialSize
11
Initial size of a value map
ValueMapMaxLoopSize
8
maximum size of a loop optimized by global value numbering
ValueSearchLimit
1000
Recursion limit in PhaseMacroExpand::value_from_mem_phi
VerifyMergedCPBytecodes
true
Verify bytecodes after RedefineClasses constant pool merging
VerifySharedSpaces
false
ㅤ
WorkAroundNPTLTimedWaitHang
1
(Unstable, Linux-specific) avoid NPTL-FUTEX hang pthread_cond_timedwait
YoungGenerationSizeIncrement
20
Adaptive size percentage change in young generation
YoungGenerationSizeSupplement
80
Supplement to YoungedGenerationSizeIncrement used at startup
YoungGenerationSizeSupplementDecay
8
Decay factor to YoungedGenerationSizeSupplement
YoungPLABSize
4096
Size of young gen promotion labs (in HeapWords)
ZeroTLAB
false
Zero out the newly created TLAB
hashCode
5
(Unstable) select hashCode generation algorithm

查看 JVM 自动设置的 XX 配置

查看 JVM 自动设置的 XX 配置的命令:java -XX:+PrintCommandLineFlags,输出如下:
-XX:InitialHeapSize=268435456 -XX:MaxHeapSize=4294967296 -XX:+PrintCommandLineFlags -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:+UseParallelGC