这里整理下 JVM 相关的参数信息,本文档使用的是 MAC OS 平台的 Hotspot JVM,版本为 1.8.0_181。
JVM 运行模式
Hotspot JVM 有两种运行模式,分别是 server 和 client。
它们的区别是 server 的初始堆空间会大一些,默认使用的是并行垃圾回收器,启动慢运行快。client VM 相对来讲会保守一些,初始堆空间会小一些,使用串行的垃圾回收器,它的目标是为了让 JVM 的启动速度更快,但运行速度会比 server 模式慢些。
可以使用-server 和-client 选项来指定 JVM 的类型。
X 选项
java -X 可以输出所以的 X 的选项,下面列出一些常用的选项。
-Xmixed 混合模式执行 (默认)
-Xint 仅解释模式执行
-Xloggc:<file> 将 GC 状态记录在文件中 (带时间戳)
-Xms<size> 设置初始 Java 堆大小
-Xmx<size> 设置最大 Java 堆大小
-Xss<size> 设置 Java 线程堆栈大小
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
参考资料
- https://www.cnblogs.com/z-sm/p/6253335.html
- https://docs.oracle.com/javase/8/docs/technotes/guides/vm/server-class.html
- https://www.iteye.com/blog/qingfeng825-1781617
- https://blog.csdn.net/lxlmycsdnfree/article/details/81531363
- https://blog.csdn.net/huanxianglove/article/details/90247994
- https://blog.csdn.net/foolishandstupid/article/details/77596050
- http://lovestblog.cn/blog/2015/05/07/system-gc/
- http://ifeve.com/jvm-cms-log/
- https://blog.csdn.net/lz710117239/article/details/78565926
- https://blog.csdn.net/shine0181/article/details/8533834
- https://www.cnblogs.com/moonandstar08/p/4924588.html
- https://blog.csdn.net/zero__007/article/details/52926366
- https://www.jianshu.com/p/a6f19189ec62
- https://www.jianshu.com/p/b99c9ef0eb16
- https://www.cnblogs.com/milton/p/6134251.html
- https://www.jianshu.com/p/92a5fbb33764
- https://emacsist.github.io/2019/07/31/java%E5%86%85%E8%81%94inline%E7%9B%B8%E5%85%B3%E8%B5%84%E6%96%99/
- https://www.jianshu.com/p/7414fd6862c5
- https://blog.csdn.net/blueheart20/article/details/52050545
- http://www.voidcn.com/article/p-kowussju-brm.html
- https://www.iteye.com/blog/softbeta-1467379
- https://blog.csdn.net/jadar_ly/article/details/670751
- http://www.seotest.cn/jishu/27902.html
- https://www.jianshu.com/p/d3c3301740d0
- https://blog.csdn.net/pengzhouzhou/article/details/94516616
- https://blog.csdn.net/weixin_34255793/article/details/91666030
- https://www.cnblogs.com/syuf/p/10183683.html
- https://www.bbsmax.com/A/rV574r1XdP/
- https://my.oschina.net/Rayn/blog/842868
- https://www.jianshu.com/p/00a7a023adf3
- https://www.cnblogs.com/yingsong/p/5896207.html
- https://www.jianshu.com/p/f65eebe38382
- https://www.jianshu.com/p/5fbe42932f81
- http://www.voycn.com/index.php/article/mianshitishenrujiexisynchronizeddicengshixian
- https://blog.csdn.net/chenmh12/article/details/90256808
- https://toutiao.io/posts/hltb1e/preview
- https://blog.csdn.net/www_changer/article/details/82285842
- https://www.520mwx.com/view/61784
- https://www.jianshu.com/p/45b125e5ec61
- https://www.codercto.com/a/85400.html
- https://ifeve.com/useful-jvm-flags-part-7-cms-collector/
- http://www.chepoo.com/application-pressure-promotion-failed.html
- https://juejin.im/entry/5c382ce9e51d45515f24521c
- https://www.jianshu.com/p/2a1b2f17d3e4
- https://www.jianshu.com/p/be5389ca93f7
- https://www.jianshu.com/p/12eda04e6f87
- https://blog.csdn.net/foolishandstupid/article/details/77430875
- https://www.jianshu.com/p/832fc4d4cb53
- https://blog.csdn.net/yxc135/article/details/12068177
- https://blog.csdn.net/weixin_39267363/article/details/100415791
- https://blog.csdn.net/sky1young/article/details/27063821
- https://www.cnblogs.com/beichenroot/p/11134409.html
- https://www.jianshu.com/p/0964124ae822
- https://stackoverflow.com/questions/5792049/xxonoutofmemoryerror-kill-9-p-problem
- https://blog.csdn.net/maosijunzi/article/details/46410697
- https://www.jianshu.com/p/0b8a9d137ee7
- https://cloud.tencent.com/developer/article/1486792
- https://www.cnblogs.com/BlueStarWei/p/9358757.html
- https://www.jianshu.com/p/5638c378a910
- https://blog.csdn.net/qq_26222859/article/details/80546917
- http://ifeve.com/jvm%E4%BC%98%E5%8C%96%E4%B9%8B%E9%80%83%E9%80%B8%E5%88%86%E6%9E%90%E5%8F%8A%E9%94%81%E6%B6%88%E9%99%A4/
- https://www.jianshu.com/p/871b993fb3ad
- http://www.itkeyword.com/doc/5667377716363278222/Windows-XP-TomcatJVMJava
- https://blog.csdn.net/qq_27529917/article/details/86978237
- https://segmentfault.com/a/1190000007815623
- https://www.jiankunking.com/java-jvm-gc-g1-note.html
- https://mp.weixin.qq.com/s/FHY0MelBfmgdRpT4zWF9dQ
- https://www.cnblogs.com/ityouknow/p/5614961.html
- https://blog.csdn.net/qq_34446485/article/details/80968685
- https://www.2cto.com/kf/201806/757352.html
- https://www.jianshu.com/p/29c20f0684d0
- https://www.cnblogs.com/iceAeterNa/p/4878112.html
- https://www.zhihu.com/question/57212072
- http://www.hackerav.com/?post=43633
- https://blog.homurax.com/2018/09/20/heap-space/
- https://stackoverflow.com/questions/32503669/why-does-the-jvm-have-a-maximum-inline-depth
- https://blog.csdn.net/xhh198781/article/details/41622925
- https://www.jianshu.com/p/c46f6fff17cb
- https://zhuanlan.zhihu.com/p/28505703
- https://my.oschina.net/Rayn/blog/1510535
- https://blog.csdn.net/bdx_hadoop_opt/article/details/34101365
- https://my.oschina.net/foxty/blog/1934968
- https://blog.csdn.net/yanguz/article/details/84536440
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于