Hotspot JVM 1.8 参数查阅手册

本贴最后更新于 1594 天前,其中的信息可能已经事过景迁

这里整理下 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

参数名默认值说明
AdaptiveSizeDecrementScaleFactor4Adaptive size scale down factor for shrinking
AdaptiveSizeMajorGCDecayTimeScale10Time scale over which major costs decay
AdaptiveSizePausePolicy0Policy for changing generation size for pause goals
AdaptiveSizePolicyCollectionCostMargin50If collection costs are within margin, reduce both by full delta
AdaptiveSizePolicyInitializingSteps20Number of steps where heuristics is used before data is used
AdaptiveSizePolicyOutputInterval0Collecton interval for printing information, zero => never
AdaptiveSizePolicyWeight10Weight given to exponential resizing, between 0 and 100
AdaptiveSizeThroughPutPolicy0Policy for changeing generation size for throughput goals
AdaptiveTimeWeight25Weight given to time in adaptive policy, between 0 and 100
AdjustConcurrencyfalsecall thr_setconcurrency at thread create time to avoid LWP starvation on MP systems (For Solaris Only)
AggressiveOptsfalse允许使用积极的性能优化功能,这些功能有望在即将发布的版本中成为默认功能。默认情况下,禁用此选项并且不使用实验性能功能。
AliasLevel30 for no aliasing, 1 for oop/field/static/array split, 2 for best
AlignVectortruePerform vector store/load alignment in loop
AllocateInstancePrefetchLines1设置在实例分配指针之前预取的行数。
AllocatePrefetchDistance-1设置对象分配的预取距离的大小(以字节为单位)。将从最后分配的对象的地址开始预取将要使用新对象的值写入的内存。每个Java线程都有自己的分配点。负值表示基于平台选择预取距离。正值是预取的字节数。附加字母k或K表示千字节,m或M指示兆字节,g或G指示千兆字节。
AllocatePrefetchInstr0将预取指令设置为在分配指针之前预取。
AllocatePrefetchLines3使用编译代码中生成的预取指令设置在最后一次对象分配后要加载的高速缓存行数。如果最后分配的对象是实例,则默认值为1;如果是数组,则默认值为3。
AllocatePrefetchStepSize16设置顺序预取指令的步长(以字节为单位)。附加字母k或K表示千字节,m或M指示兆字节,g或G指示千兆字节。
AllocatePrefetchStyle1为预取指令设置生成的代码样式。0:不要生成预取指令。1:每次分配后执行预取指令。2:使用线程局部分配块(TLAB)水印指针来确定何时执行预取指令。3:在SPARC上使用BIS指令进行分配预取。
AllowJNIEnvProxyfalseAllow JNIEnv proxies for jdbx
AllowNonVirtualCallsfalseObey the ACC_SUPER flag and allow invokenonvirtual calls
AllowParallelDefineClassfalseAllow parallel defineClass requests for class loaders registering as parallel capable
AllowUserSignalHandlersfalse允许为java进程安装信号处理器。
AlwaysActAsServerClassMachinefalseAlways act like a server-class machine
AlwaysCompileLoopMethodsfalsewhen using recompilation, never interpret methods containing loops
AlwaysLockClassLoaderfalseRequire the VM to acquire the class loader lock before calling loadClass() even for class loaders registering as parallel capable
AlwaysPreTouchfalse在JVM初始化期间允许触摸Java堆上的每个页面。这会在进入main()方法之前将所有页面放入内存中。该选项可用于测试以模拟长时间运行的系统,其中所有虚拟内存都映射到物理内存。
AlwaysRestoreFPUfalseRestore the FPU control word after every JNI call (expensive)
AlwaysTenurefalseAlways tenure objects in eden. (ParallelGC only)
AssertOnSuspendWaitFailurefalseAssert/Guarantee on external suspend wait failure
AssumeMPfalse
AutoBoxCacheMax128自动装箱拆箱缓存的最大值
AutoGCSelectPauseMillis5000Automatic GC selection pause threshhold in ms
BCEATraceLevel0How much tracing to do of bytecode escape analysis estimates
BackEdgeThreshold100000统计一个方法中循环体代码执行的次数。
BackgroundCompilationtrue启用后台编译。
BaseFootPrintEstimate2^28Estimate of footprint other than Java Heap
BiasedLockingBulkRebiasThreshold20偏向锁总撤销次数阈值。某一类锁的对象的总撤销次数超过该值,JVM会宣布该类的偏向锁失效。
BiasedLockingBulkRevokeThreshold40偏向锁总撤销次数阈值。如果总撤销数超过该值,JVM会撤销该类实例的偏向锁,并且在之后的加锁过程中直接为该类实例设置轻量级锁。
BiasedLockingDecayTime25000开启一次新的批量重偏向距离上次批量重偏向的后的延迟时间。就是开启批量重偏向后,经过了一段较长的时间(>=BiasedLockingDecayTime),撤销计数器才超过阈值,那我们会重置计数器。
BiasedLockingStartupDelay4000JVM启用后启用偏向锁的延迟时间。
BindGCTaskThreadsToCPUsfalse绑定GC线程到个别的CPU核。仅在Solaris支持。
BlockLayoutByFrequencytrue从热路径移动不频繁的执行分支。
BlockLayoutMinDiamondPercentage20Miniumum %% of a successor (predecessor) for which block layout a will allow a fork (join) in a single chain
BlockLayoutRotateLoopstrueAllow back branches to be fall throughs in the block layour
BranchOnRegisterfalseUse Sparc V9 branch-on-register opcodes
BytecodeVerificationLocalfalseEnables the Java bytecode verifier for local classes
BytecodeVerificationRemotetrueEnables the Java bytecode verifier for remote classes
C1OptimizeVirtualCallProfilingtrueUse CHA and exact type results at call sites when updating MDOs
C1ProfileBranchestrueProfile branches when generating code for updating MDOs
C1ProfileCallstrueProfile calls when generating code for updating MDOs
C1ProfileCheckcaststruerofile checkcasts when generating code for updating MDOs
C1ProfileInlinedCallstrueProfile inlined calls when generating code for updating MDOs
C1ProfileVirtualCallstrueProfile virtual calls when generating code for updating MDOs
C1UpdateMethodDatatrueUpdate methodDataOops in Tier1-generated code
CICompilerCount2设置用于编译的编译器线程数。
CICompilerCountPerCPUfalse单个CPU的编译器线程数。
CITimefalse打印消耗在JIT编译的时间
CMSAbortSemanticsfalseWhether abort-on-overflow semantics is implemented
CMSAbortablePrecleanMinWorkPerIteration100(Temporary, subject to experimentation)" Nominal minimum work per abortable preclean iteration
CMSAbortablePrecleanWaitMillis100(Temporary, subject to experimentation)" Time that we sleep between iterations when not given" enough work per iteration
CMSBitMapYieldQuantum10485760Bitmap operations should process at most this many bits between yields
CMSBootstrapOccupancy50老年代CMS GC时空间占比阈值。如果预测CMS GC完成所需要的时间大于预计的老年代将要填满的时间,则进行GC。这些判断是需要基于历史的CMS GC统计指标,然而,第一次CMS GC时,统计数据还没有形成,这时会跟据老年代的使用占比来判断是否要进行GC。
CMSClassUnloadingEnabledtrue使用并发标记清除(CMS)垃圾收集器时启用类卸载。
CMSClassUnloadingMaxInterval0卸载类判定阈值,CMSClassUnloadingEnabled启用时,若上次卸载类之后发生gc的次数大于该值,则进行卸载类。
CMSCleanOnEntertrueClean-on-enter optimization for reducing number of dirty cards
CMSCompactWhenClearAllSoftRefstrue回收软引用时进行CMS压缩。
CMSConcMarkMultiple32Size (in cards) of CMS concurrent MT marking task
CMSConcurrentMTEnabledtrue当该标志被启用时,并发的CMS阶段将以多线程执行(因此,多个GC线程会与所有的应用程序线程并行工作)。
CMSCoordinatorYieldSleepCount10number of times the coordinator GC thread will sleep while yielding before giving up and resuming GC
CMSDumpAtPromotionFailurefalse在晋升失败时dump信息。
CMSEdenChunksRecordAlwaystruepreclean阶段不对eden进行抽样,而是在ParNew运行时抽样。
CMSExpAvgFactor50设置在计算并发收集统计信息的指数平均值时用于加权当前样本的时间百分比(0到100)。
CMSExtrapolateSweepfalseCMS: cushion for block demand during sweep
CMSFullGCsBeforeCompaction0设置执行多少次FullGC后才进行一次内存碎片整理。默认每次都进行内存碎片整理。
CMSIncrementalDutyCycle10每次增量回收垃圾的占总垃圾回收任务的比例。此选项在JDK 8中已弃用。
CMSIncrementalDutyCycleMin0每次增量回收垃圾的占总垃圾回收任务的最小比例。此选项在JDK 8中已弃用。
CMSIncrementalModefalse开始CMS增量模式(i-cms)。在增量模式下,CMS收集器在并发阶段,不会独占整个周期,而会周期性的暂停,唤醒应用线程。收集器把并发阶段工作,划分为片段,安排在次级(minor)回收之间运行。这对需要低延时,运行在少量CPU服务器上的应用很有用。此选项在JDK 8中已弃用。
CMSIncrementalOffset0设置增量模式占空比在次要集合之间的时间段内向右移动的时间百分比(0到100)。在弃用选项后,此选项在JDK 8中已弃用。
CMSIncrementalPacingtrue根据应用程序的行为自动调整每次执行的垃圾回收任务的数量,此选项在JDK 8中已弃用。
CMSIncrementalSafetyFactor10设置计算占空比时用于添加保守性的时间百分比(0到100)。在弃用选项后,此选项在JDK 8中已弃用。
CMSIndexedFreeListReplenish4Replenish and indexed free list with this number of chunks
CMSInitiatingOccupancyFraction-1指定在老年代用掉多少内存后开始进行垃圾回收。与吞吐量优先的回收器不同的是,吞吐量优先的回收器在老生代内存用尽了以后才开始进行收集,这对CMS来讲是不行的,因为吞吐量优先的垃圾回收器运行的时候会停止所有用户线程,所以不会产生新的对象,而CMS运行的时候,用户线程还有可能产生新的对象,所以不能等到内存用光后才开始运行。比如-XX:CMSInitiatingOccupancyFraction=75表示老生代用掉75%后开始回收垃圾。
CMSIsTooFullPercentage98卸载类判定阈值,开启CMSClassUnloadingEnabled时,若老年代内存使用率高于该值,则进行类卸载。
CMSLargeCoalSurplusPercent0.95CMS: the factor by which to inflate estimated demand of large block sizes to prevent coalescing with an adjoining block
CMSLargeSplitSurplusPercent1.00CMS: the factor by which to inflate estimated demand of large block sizes to prevent splitting to supply demand for smaller blocks
CMSLoopWarnfalseWarn in case of excessive CMS looping
CMSMaxAbortablePrecleanLoops0预清理中最多循环的次数,循环超过该值,则退出循环。若为0,则无循环次数的限制。
CMSMaxAbortablePrecleanTime5000预清理阶段最长时间,如果达到该值,中止预清理阶段,进入remark。单位为毫秒。
CMSOldPLABMax1024Max size of CMS gen promotion lab caches per worker per blksize
CMSOldPLABMin16Min size of CMS gen promotion lab caches per worker per blksize
CMSOldPLABNumRefills4Nominal number of refills of CMS gen promotion lab cache per worker per block size
CMSOldPLABReactivityFactor2The gain in the feedback loop for on-the-fly PLAB resizing during a scavenge
CMSOldPLABResizeQuickerfalseWhether to react on-the-fly during a scavenge to a sudden change in block demand rate
CMSOldPLABToleranceFactor4The tolerance of the phase-change detector for on-the-fly PLAB resizing during a scavenge
CMSPLABRecordAlwaystrueWhether to always record survivor space PLAB bdries" (effective only if CMSParallelSurvivorRemarkEnabled)
CMSParPromoteBlocksToClaim16Number of blocks to attempt to claim when refilling CMS LAB for parallel GC.
CMSParallelInitialMarkEnabledtrue初始化标记阶段启用并行处理。
CMSParallelRemarkEnabledtrue标记标记阶段启用并行处理。
CMSParallelSurvivorRemarkEnabledtrueWhether parallel remark of survivor space" enabled (effective only if CMSParallelRemarkEnabled)
CMSPrecleanDenominator3CMSPrecleanNumerator:CMSPrecleanDenominator yields convergence ratio
CMSPrecleanIter3Maximum number of precleaning iteration passes
CMSPrecleanNumerator2CMSPrecleanNumerator:CMSPrecleanDenominator yields convergence ratio
CMSPrecleanRefLists1truePreclean ref lists during (initial) preclean phase
CMSPrecleanRefLists2falsePreclean ref lists during abortable preclean phase
CMSPrecleanSurvivors1falsePreclean survivors during (initial) preclean phase
CMSPrecleanSurvivors2truePreclean survivors during abortable preclean phase
CMSPrecleanThreshold1000Don't re-iterate if #dirty cards less than this
CMSPrecleaningEnabledtrueCMS是否需要进行Pre cleaning这个阶段。
CMSPrintChunksInDumpfalseIn a dump enabled by CMSDumpAtPromotionFailure, include more detailed information about the free chunks.
CMSPrintEdenSurvivorChunksfalse
CMSPrintObjectsInDumpfalseIn a dump enabled by CMSDumpAtPromotionFailure, include more detailed information about the allocated objects.
CMSRemarkVerifyVariant1Choose variant (1,2) of verification following remark
CMSReplenishIntermediatetrueReplenish all intermediate free-list caches
CMSRescanMultiple32Size (in cards) of CMS parallel rescan task
CMSSamplingGrain16384The minimum distance between eden samples for CMS (see above)
CMSScavengeBeforeRemarkfalseCMS在remark前强制进行一次MinorGC
CMSScheduleRemarkEdenPenetration50CMS预清理后,eden space的使用率如果低于该值,则中断预清理,进入remark阶段。
CMSScheduleRemarkEdenSizeThreshold2097152设置CMS重新标记的Eden区大小阈值。低于此值时不启动重新标记阶段,因为回收预期微不足道。
CMSScheduleRemarkSamplingRatio5Start sampling Eden top at least before yg occupancy reaches" 1/ of the size at which we plan to schedule remark
CMSSmallCoalSurplusPercent1.05CMS: the factor by which to inflate estimated demand of small block sizes to prevent coalescing with an adjoining block
CMSSmallSplitSurplusPercent1.10CMS: the factor by which to inflate estimated demand of large block sizes to prevent coalescing with an adjoining block
CMSSplitIndexedFreeListBlockstrueWhen satisfying batched demand, split blocks from the IndexedFreeList whose size is a multiple of requested size
CMSTriggerInterval-1CMS回收的间隔。如果=0表示一直触发。
CMSTriggerRatio80设置在-XX:MinHeapFreeRatioCMS收集周期开始之前分配的值所指定的值的百分比(0到100)。
CMSWaitDuration2000轮询判断老年代是否需要进行GC,每次轮循阻塞线程的时间。
CMSWorkQueueDrainThreshold10Don't drain below this size per parallel worker/thief
CMSYieldtrueYield between steps of concurrent mark & sweep
CMSYieldSleepCount0number of times a GC thread (minus the coordinator) will sleep while yielding before giving up and resuming GC
CMSYoungGenPerWorker67108864每个worker对应的年轻代大小?跟硬件相关,x86机器为64M。
CMS_FLSPadding1The multiple of deviation from mean to use for buffering" against volatility in free list demand.
CMS_FLSWeight75Percentage (0-100) used to weight the current sample when" computing exponentially decating averages for CMS FLS statistics.
CMS_SweepPadding1The multiple of deviation from mean to use for buffering" against volatility in inter-sweep duration.
CMS_SweepTimerThresholdMillis10Skip block flux-rate sampling for an epoch unless inter-sweep duration exceeds this threhold in milliseconds
CMS_SweepWeight75Percentage (0-100) used to weight the current sample when" computing exponentially decaying average for inter-sweep duration.
CheckEndorsedAndExtDirsfalse
CheckJNICallsfalseVerify all arguments to JNI calls
ClassUnloadingtrue启用对类进行回收。
ClassUnloadingWithConcurrentMarktrue在并发标记阶段结束后,启用该参数则进行类型卸载。
ClearFPUAtPark0(Unsafe,Unstable)
ClipInliningtrueclip inlining if aggregate method exceeds DesiredMethodLimit
CodeCacheExpansionSize65536用于设置code cache的expansion size
CodeCacheMinimumFreeSpace512000设置编译所需的最小可用空间(以字节为单位)。
CollectGen0FirstfalseFullGC时是否先YGC。
CompactFieldstrue是否在header与下一个8-byte对齐位置之间的空隙处存放成员。
CompilationPolicyChoice0which compilation policy
CompileCommand 指定要对方法执行的命令。
CompileCommandFile 设置从中读取JIT编译器命令的文件。
CompileOnly List of methods (pkg/class.name) to restrict compilation to
CompileThreshold10000方法触发编译时的调用次数。
CompilerThreadHintNoPreempttrue设置应限制编译的方法列表(以逗号分隔)。仅编译指定的方法。使用完整的类名(包括包和子包)指定每个方法。
CompilerThreadPriority-1编译器线程的优先级(-1表示不变)
CompilerThreadStackSize0编译器线程的栈大小
CompressedClassSpaceSize2^10类指针压缩空间大小
ConcGCThreads0CMS并发阶段的线程数。默认值取决于JVM可用的CPU数。
ConditionalMoveLimit3Limit of ops to make speculative when using CMOVE
ContendedPaddingWidth128缓存行填充宽度。
ConvertSleepToYieldtrueConverts sleep(0) to thread yield (may be off for SOLARIS to improve GUI)
ConvertYieldToSleepfalseConverts yield to a sleep of MinSleepInterval to simulate Win32 behavior (SOLARIS only)
CrashOnOutOfMemoryErrorfalseIf this option is enabled, when an out-of-memory error occurs, the JVM crashes and produces text and binary crash files.
CreateMinidumpOnCrashfalseCreate minidump on VM fatal error
CriticalJNINativestruecheck for critical JNI entry points
DTraceAllocProbesfalseEnable dtrace probes for object allocation
DTraceMethodProbesfalseEnable dtrace probes for method-entry and method-exit
DTraceMonitorProbesfalseEnable dtrace probes for monitor events
Debuggingfalseset when executing debug methods in debug.ccp (to prevent triggering assertions)
DefaultMaxRAMFraction4Fraction (1/n) of real memory used for server class max heap
DefaultThreadPriority-1what 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
DeferThrSuspendLoopCount4000(Unstable) Number of times to iterate in safepoint loop before blocking VM threads
DeoptimizeRandomfalsedeoptimize random frames on random exit from the runtime system
DisableAttachMechanismfalse禁止工具连接到JVM。禁用后将不能使用jcmd、jstack、jmap和jinfo等命令。
DisableExplicitGCfalse禁止显式调用GC。
DisplayVMOutputToStderrfalseIf DisplayVMOutput is true, display all VM output to stderr
DisplayVMOutputToStdoutfalseIf DisplayVMOutput is true, display all VM output to stdout
DoEscapeAnalysistrue开启逃逸分析
DontCompileHugeMethodstrue关闭大型方法的JIT编译。
DontYieldALotfalseThrow away obvious excess yield calls (for SOLARIS only)
DumpLoadedClassList dump当前JVM装载的类列表
DumpReplayDataOnErrortrue
DumpSharedSpacesfalseSpecial 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.
EagerXrunInitfalseEagerly initialize -Xrun libraries; allows startup profiling, but not all -Xrun libraries may support the state of the VM at this time
EliminateAllocationArraySizeLimit64大于该数量的元素的数组不会进行逃逸分析优化。
EliminateAllocationstrue开启标量替换。即允许将对象分配在栈。
EliminateAutoBoxtruePrivate flag to control optimizations for autobox elimination
EliminateLockstrue开启锁消除优化。
EliminateNestedLockstrue开启嵌套锁优化。
EmitSync0(Unsafe,Unstable) Controls emission of inline sync fast-path code
EnableContendedtrue
EnableResourceManagementTLABCachetrue
EnableSharedLookupCachetrue
EnableTracingfalseEnable event-based tracing
ErgoHeapSizeLimit0堆最大容量的默认值,如果设置的限制值比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
EscapeAnalysisTimeout20.00
EstimateArgEscapetrueAnalyze bytecodes to estimate escape state of arguments
ExitOnOutOfMemoryErrorfalseWhen 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.
ExplicitGCInvokesConcurrentfalse如果在代码里显式调用System.gc()会做并行CMS GC。该参数在允许system GC且使用CMS GC有效
ExplicitGCInvokesConcurrentAndUnloadsClassesfalse与上面类似,额外增加对永久代的gc.
ExtendedDTraceProbesfalse启用dtrace影响性能的其他工具探测。
ExtraSharedClassListFile
FLSAlwaysCoalesceLargefalseCMS: Larger free blocks are always available for coalescing
FLSCoalescePolicy2CMS: Aggression level for coalescing, increasing from 0 to 4
FLSLargestBlockCoalesceProximity0.99CMS: the smaller the percentage the greater the coalition force
FailOverToOldVerifiertrue如果新的Class校验器检查失败,则使用老的校验器。
FastTLABRefilltrueUse fast TLAB refill code
FenceInstruction0(Unsafe,Unstable) Experimental
FieldsAllocationStyle1字段排列方式。类型0, 引用在原始类型前面, 然后依次是longs/doubles, ints, shorts/chars, bytes, 最后是填充字段, 以满足对其要求。类型1, 引用在原始类型后面。类型2, JVM在布局时会尽量使父类对象和子对象挨在一起。
FilterSpuriousWakeupstruePrevent spurious or premature wakeups from object.wait (Solaris only)
FlightRecorderOptions
ForceNUMAfalseForce NUMA optimizations on single-node/UMA systems
ForceTimeHighResolutionfalseUsing high time resolution(For Win32 only)
FreqInlineSize325经常被调用的方法的进行 inline 的最大 byte code 大小。
G1ConcMarkStepDurationMillis10.00Target duration of individual concurrent marking steps in milliseconds.
G1ConcRSHotCardLimit4The threshold that defines (>=) a hot card.
G1ConcRSLogCacheSize10"Log base 2 of the length of conc RS hot-card cache.
G1ConcRefinementGreenZone0The number of update buffers that are left in the queue by the concurrent processing threads. Will be selected ergonomically by default.
G1ConcRefinementRedZone0Maximum 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.
G1ConcRefinementServiceIntervalMillis300The last concurrent refinement thread wakes up every specified number of milliseconds to do miscellaneous work.
G1ConcRefinementThreads0更新RSet的线程组数量。若未设置,则取ParallelGCThreads值。
G1ConcRefinementThresholdStep0Each time the rset update queue increases by this amount activate the next refinement thread if available. Will be selected ergonomically by default.
G1ConcRefinementYellowZone0Number of enqueued update buffers that will trigger concurrent processing. Will be selected ergonomically by default.
G1ConfidencePercent50Confidence coefficient for G1 pause prediction. Introduced in Java 6 Update 26.
G1HeapRegionSize0G1区块的大小, 取值为1M至32M. 其取值是要根据最小Heap大小划分出2048个区块。
G1HeapWastePercent5控制G1 GC不会回收的空闲内存比例,默认是堆内存的5%。G1 GC在回收过程中会回收所有Region的内存,并持续地做这个工作直到空闲内存比例达到设置的这个值为止,所以对于设置了较大值的堆内存来说,需要采用比较低的比例,这样可以确保较小部分的内存不被回收。
G1MixedGCCountTarget8当占用内存超过InitiatingHeapOccupancyPercent阀值时, 最多通过多少次Mixed GC来将内存控制在阀值之下。
G1RSetRegionEntries0Max number of regions for which we keep bitmaps.
G1RSetScanBlockSize64Size of a work unit of cards claimed by a worker thread during RSet scanning.
G1RSetSparseRegionEntries0Max number of entries per region in a sparse table.Will be set ergonomically by default.
G1RSetUpdatingPauseTimePercent10设置更新RSet的目标时间百分比。通过减小该值,G1通常会同时执行更多Rset更新工作。
G1RefProcDrainInterval10"The number of discovered reference objects to process before draining concurrent marking work queues.
G1ReservePercent10设置保留为false上限的堆的百分比(0到50),以减少G1收集器升级失败的可能性。
G1SATBBufferEnqueueingThresholdPercent60"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.
G1SATBBufferSize1024Number of entries in an SATB log buffer.
G1UpdateBufferSize256Size of an update buffer
G1UseAdaptiveConcRefinementtrueSelect green, yellow and red zones adaptively to meet the the pause requirements.
GCDrainStackTargetSize64how many entries we'll try to leave on the stack during parallel GC
GCHeapFreeLimit2Heap空闲空间的最低比例下限,当超过下限时,会抛出OOM(HeapSpace)异常
GCLockerEdenExpansionPercent5How much the GC can expand the eden by while the GC locker is active (as a percentage)
GCLockerInvokesConcurrentfalse加上之后,原本遇上JNI GCLocker只需要补偿YGC就够的,变成要执行YGC + CMS GC了。
GCLogFileSize8192GC日志最大尺寸。
GCPauseIntervalMillis0暂停间隔目标。
GCTaskTimeStampEntries200Number of time stamp entries per gc worker thread
GCTimeLimit98花费在GC上的时间上限,当超过该值时,会抛出OOM(HeapSpace)异常
GCTimeRatio99最大GC占总可用时间比例,若时间过长,会调整相应的空间大小(花费在GC上的时间比例不超过1/(1+GCTimeRatio))
HeapBaseMinAddress2^31OS specific low limit for heap base address
HeapDumpAfterFullGCfalse实现在Full GC后dump。
HeapDumpBeforeFullGCfalse实现在Full GC前dump。
HeapDumpOnOutOfMemoryErrorfalse在内存出现OOM时,把Heap转存到文件以便后续分析,文件名通常是java_pid.hprof,其中pid为该程序的进程号。
HeapDumpPath heap转存文件的存储路径。
HeapFirstMaximumCompactionCount3The collection count for the first maximum compaction
HeapMaximumCompactionInterval20How often should we maximally compact the heap (not allowing any dead space)
HeapSizePerGCThread87241520Size of heap (bytes) per GC thread used in calculating the number of GC threads
IgnoreEmptyClassPathsfalse
IgnoreUnrecognizedVMOptionsfalse让JVM默默地忽略不可识别的选项,而不是崩溃。
IncreaseFirstTierCompileThresholdAt50
IncrementalInlinetruedo post parse inlining
InitialBootClassLoaderMetaspaceSize4194304这个参数决定了NoKlass Metaspace的第一个内存Block的大小,即2倍该值,同时为bootstrapClassLoader的第一块内存chunk分配了与该值的大小
InitialCodeCacheSize2555904设置初始CodeCache大小。
InitialHeapSize0JVM初始堆内存,可通过-Xms设置
InitialRAMFraction64Fraction (1/n) of real memory used for initial heap size
InitialSurvivorRatio8设置吞吐量垃圾收集器使用的初始幸存者空间比率(由-XX:+UseParallelGC和/或 - XX:+UseParallelOldGC选项启用)。
InitialTenuringThreshold7晋升年龄阈值的最小值。一个对象在Suvivor区移动达到晋升年龄阈值后下次MinorGC就进入老年代。JVM会根据YGC与FullGC的耗时来动态调整晋升年龄阈值。
InitiatingHeapOccupancyPercent45设置启动并发GC循环的堆占用百分比(0到100)。它由垃圾收集器使用,它根据整个堆的占用而触发并发GC循环,而不仅仅是其中一代(例如,G1垃圾收集器)。
Inlinetrue启用方法内联。
InlineDataFile
InlineSmallCode1000设置应内联的已编译方法的最大代码大小(以字节为单位)。
InlineSynchronizedMethodstrue是否允许内联synchronized methods。
InsertMemBarAfterArraycopytrueInsert memory barrier after arraycopy call
InteriorEntryAlignment16Code alignment for interior entry points in generated code (in bytes)
InterpreterProfilePercentage33解释器监控比率
JNIDetachReleasesMonitorstrueJNI DetachCurrentThread releases monitors owned by thread
JavaMonitorsInStackTracetrue标记启用锁定行。
JavaPriority10_To_OSPriority-1Map Java priorities to OS priorities
JavaPriority1_To_OSPriority-1Map Java priorities to OS priorities
JavaPriority2_To_OSPriority-1Map Java priorities to OS priorities
JavaPriority3_To_OSPriority-1Map Java priorities to OS prioritiesMap Java priorities to OS priorities
JavaPriority4_To_OSPriority-1Map Java priorities to OS priorities
JavaPriority5_To_OSPriority-1Map Java priorities to OS priorities
JavaPriority6_To_OSPriority-1Map Java priorities to OS priorities
JavaPriority7_To_OSPriority-1Map Java priorities to OS priorities
JavaPriority8_To_OSPriority-1Map Java priorities to OS priorities
JavaPriority9_To_OSPriority-1Map Java priorities to OS priorities
LIRFillDelaySlotsfalsefill delays on on SPARC with LIR
LargePageHeapSizeThreshold134217728Use large pages if max heap is at least this big
LargePageSizeInBytes0设置大内存页的大小,在启用大内存页支持(UseLargePages)时生效
LazyBootClassLoadertrueEnable/disable lazy opening of boot class path entries
LiveNodeCountInliningCutoff40000max number of live nodes in a method
LogCommercialFeaturesfalse
LoopMaxUnroll16
LoopOptsCount43Set level of loop optimization for tier 1 compiles
LoopUnrollLimit60Unroll 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.
LoopUnrollMin4
LoopUnswitchingtrue开启循环判断外提。这是一种编译器优化方法。
ManagementServerfalseMinimum number of unroll loop bodies before checking progress of rounds of unroll,optimize,..
MarkStackSize4194304Size of marking stack
MarkStackSizeMax2^29Max size of marking stack
MarkSweepAlwaysCompactCount4在没有明显的压缩效果之前,我们允许一些垃圾对象移动到内存区域的底部,即开始位置,每进行MarkSweepAlwaysCompactCount(默认4次)FGC时,再进行一次完全压缩。
MarkSweepDeadRatio5每经过MarkSweepAlwaysCompactCount次GC,就允许当前区域空间的MarkSweepDeadRatio%(TenuredSpace)/PermMarkSweepDeadRatio%(ContigPermSpace)大小被用来将死亡对象当做存活对象处理。
MaxBCEAEstimateLevel5Maximum number of nested calls that are analyzed by BC EA.
MaxBCEAEstimateSize150Maximum bytecode size of a method to be analyzed by BC EA.
MaxDirectMemorySize0指定直接内存的最大大小,若未指定,则默认与Java堆最大值一样。
MaxFDLimittrue设置java进程可用文件描述符为操作系统允许的最大值。
MaxGCMinorPauseMillis2^64-1Adaptive size policy maximum GC minor pause time goal in msec
MaxGCPauseMillis2^64-1最大的GC暂停时间,如果时间过长,会相应调整空间的大小(单位为毫秒)
MaxHeapFreeRatio70堆最大空闲阈值。GC后如果发现堆内存空闲占预估堆的比例超过该值,则收缩堆内存的评估最大值。预估堆内存是堆大小动态调控的重要选项之一. 堆内存预估最大值一定小于或等于固定最大值(-Xmx指定的数值), 前者会根据使用情况动态调大或缩小, 以提高GC回收的效率。
MaxHeapSize130862280JVM最大堆内存,可通过-Xmx设置
MaxInlineLevel9针对嵌套调用的最大内联深度。
MaxInlineSize35方法可以被内联的最大bytecode大小。
MaxJNILocalCapacity65536
MaxJavaStackTraceDepth1024该参数的目的是让JVM在实现 Throwable.fillInStackTrace()时把整个调用栈上所有Java栈帧的信息都记录下来。也就是说fillInStackTrace()在记录到最多MaxJavaStackTraceDepth层调用栈帧信息后就会停止爬栈。这是因为爬栈并将栈帧信息转换为Java对象(StackTraceElement)是个比较慢的动作,限制一下最大深度可以把fillInStackTrace()的最大开销给限制住。
MaxJumpTableSize65000Maximum number of targets in a generated jump table
MaxJumpTableSparseness5HotSpot 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.
MaxLabelRootDepth1100Maximum times call Label_Root to prevent stack overflow
MaxLoopPad15Align a loop if padding size in bytes is less or equal to this value
MaxMetaspaceExpansion5452592增大触发metaspace GC阈值的最大要求。
MaxMetaspaceFreeRatio70GC后触发metaspace扩容的最小空闲比例。
MaxMetaspaceSize2^64-1metaspace最大空间大小
MaxNewSize2^64-1年轻代的最大大小
MaxNodeLimit80000设置单个方法编译期间要使用的最大节点数。
MaxRAM2^37 this parameter overrides the actual amount of physical RAM when calculating the heap limits basing on ergonomics.
MaxRAMFraction4默认值为4,即堆的最大容量是MaxRAM值的四分之一。
MaxRecursiveInlineLevel1the 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.
MaxTenuringThreshold15晋升年龄阈值的最大值。一个对象在Suvivor区移动达到晋升年龄阈值后下次MinorGC就进入老年代。如果设置为0,则年轻代对象不经过Suvivor区,直接进入老年代,对于需要大量常驻内存的应用,这样做可以提高效率。如果将该值设置为一个将大的值,则年轻代对象会在Suvivor区进行多次复制,这样可以增加对象在年轻代存活时间,增加对象在年轻代被垃圾回收的概率,减少Full GC的频率,可以在某种程度上提高服务稳定性。
MaxTrivialSize6设置要内联的简单方法的最大字节码大小(以字节为单位)。
MaxVectorSize32Max vector size in bytes, actual size could be less depending on elements type
MetaspaceSize21810376metaspace初始大小,达到该值就会触发垃圾回收器进行类型卸载,同时GC会对该值进行调整:如果释放了大量空间,就适当降低该值;如果释放了很少空间,那么在不超过MaxMetaspaceSize时适当提高该值
MethodFlushingtrueReclamation of zombie and not-entrant methods
MinHeapDeltaBytes170392为了防止频繁扩展内存代空间,每次扩展内存代时都有一个最小值,由该参数定义。
MinHeapFreeRatio40堆最小空闲阈值。GC后如果发现空闲堆内存占到整个预估堆内存的N%(百分比), 则放大堆内存的预估最大值。
MinInliningThreshold250方法可以被内联的最小调用次数。
MinJumpTableSize10case的数量小于这个不会生成jump_table。
MinMetaspaceExpansion340784增大触发metaspace GC阈值的最小要求。
MinMetaspaceFreeRatio40触发metaspaceGC的最小空闲阈值。表示每次GC完之后,假设我们允许接下来metaspace可以继续被commit的内存占到了被commit之后总共committed的内存量的MinMetaspaceFreeRatio%,如果这个总共被committed的量比当前触发metaspaceGC的阈值要大,那么将尝试做扩容,也就是增大触发metaspaceGC的阈值,不过这个增量至少是MinMetaspaceExpansion才会做,不然不会增加这个阈值。这个参数主要是为了避免触发metaspaceGC的阈值和gc之后committed的内存的量比较接近,于是将这个阈值进行扩大。一般情况下在gc完之后,如果被committed的量还是比较大的时候,换个说法就是离触发metaspaceGC的阈值比较接近的时候,这个调整会比较明显。
MinRAMFraction2JVM需要确保预留足够的内存给操作系统使用。JVM占用的内容最大不超过物理内存除以该值。
MinSurvivorRatio3Minimum ratio of young generation/survivor space size
MinTLABSize2048Minimum allowed TLAB size (in bytes)
MonitorBound0
MonitorInUseListsfalse在STW时,所有的Java线程都会暂停在“安全点(SafePoint)”,此时VMThread通过对所有Monitor的遍历。该值表示启用对当前正在“使用”中的Monitor子序列进行遍历,从而得到哪些未被使用的“Monitor”作为降级对象。
MultiArrayExpandLimit6Maximum number of individual allocations in an inline-expanded multianewarray instruction
MustCallLoadClassInternalfalseloadClassInternal() 替代 loadClass()
NUMAChunkResizeWeight20"Percentage (0-100) used to weight the current sample when "computing exponentially decaying average for" AdaptiveNUMAChunkSizing
NUMAInterleaveGranularity2097152Granularity to use for NUMA interleaving on Windows OS
NUMAPageScanRate256Maximum number of pages to include in the page scan procedure
NUMASpaceResizeRate2^30Do not reallocate more that this amount per collection
NUMAStatsfalsePrint NUMA stats in detailed heap information
NativeMemoryTrackingoff该参数开启NMT。Native Memory Tracking (NMT) 是Hotspot VM用来分析VM内部内存使用情况的一个功能。
NeedsDeoptSuspendfalseTrue for register window machines (sparc/ia64)
NeverActAsServerClassMachinefalseNever act like a server-class machine
NeverTenurefalse永不晋升
NewRatio2年轻代与老年代的比例
NewSize1363144默认年轻代的大小
NewSizeThreadIncrease5320允许您指定每个活动线程会增加多少初期对象空间。这个选项在调节由于线程增加而增加的分配率时可能会有用。
NmethodSweepActivity10
NmethodSweepCheckInterval5Compilers wake up every n seconds to possibly sweep nmethods
NmethodSweepFraction16Number of invocations of sweeper to cover all nmethods
NodeLimitFudgeFactor2000Fudge Factor for certain optimizations
NumberOfGCLogFiles0Number of gclog files in rotation, Default: 0, no rotation
NumberOfLoopInstrToAlign4Number of first instructions in a loop to align
ObjectAlignmentInBytes8Default object alignment in bytes, 8 is minimum
OldPLABSize1024Size of old gen promotion labs (in HeapWords)
OldPLABWeight50Percentage (0-100) used to weight the current sample when computing exponentially decaying average for resizing CMSParPromoteBlocksToClaim
OldSize5452592老年代的默认大小
OmitStackTraceInFastThrowtrueOmit backtraces for some 'hot' exceptions in optimized code
OnError Run user-defined commands on fatal error
OnOutOfMemoryError 指定一个脚本路径,当OOM时,去执行该脚本。
OnStackReplacePercentage140方法中循环执行部分代码的执行次数触发OSR编译时的阈值。
OptimizeFilltrueconvert fill/copy loops into intrinsic
OptimizePtrComparetrueUse escape analysis to optimize pointers compare
OptimizeStringConcattrue启用String串联操作的优化。
OptoBundlingfalseGenerate nops to fill i-cache lines
OptoLoopAlignment16Align inner loops to zero relative to this modulus
OptoSchedulingfalseInstruction Scheduling after register allocation
PLABWeight75Percentage (0-100) used to weight the current sample when computing exponentially decaying average for ResizePLAB.
PSChunkLargeArraystruetrue: process large arrays in chunks
ParGCArrayScanChunk50Scan a subset and push remainder, if array is bigger than this
ParGCDesiredObjsFromOverflowList20The desired number of objects to claim from the overflow list
ParGCTrimOverflowtrueEagerly trim the local overflow lists (when ParGCUseLocalOverflow
ParGCUseLocalOverflowfalseInstead of a global overflow list, use local overflow stacks
ParallelGCBufferWastePct10wasted fraction of parallel allocation buffer
ParallelGCThreads0并行垃圾回收的线程数。默认的配置是如果处理器的个数小于8,那么就是处理器的个数;如果处理器大于8,它的值就是3+5N/8。
ParallelGCVerbosefalseVerbose output for parallel GC.
ParallelOldDeadWoodLimiterMean50The mean used by the par compact dead wood limiter (a number between 0-100).
ParallelOldDeadWoodLimiterStdDev80The standard deviation used by the par compact dead wood limiter (a number between 0-100).
ParallelRefProcBalancingEnabledtrueEnable balancing of reference processing queues
ParallelRefProcEnabledfalse并行处理Reference,加快处理速度,缩短耗时。
PartialPeelAtUnsignedTeststruePartial peel at unsigned tests if no signed test exists
PartialPeelLooptruePartial peel (rotate) loops
PartialPeelNewPhiDelta0Additional phis that can be created by partial peeling
PausePadding1How much buffer to keep for pause time
PerBytecodeRecompilationCutoff200Per-BCI limit on repeated recompilation (-1=>'Inf')
PerBytecodeTrapLimit4Limit on traps (of one kind) at a particular BCI
PerMethodRecompilationCutoff400After recompiling N times, stay in the interpreter (-1=>'Inf')
PerMethodTrapLimit100Limit on traps (of one kind) in a method (includes inlines)
PerfAllowAtExitRegistrationfalseAllow registration of atexit() methods
PerfBypassFileSystemCheckfalseBypass Win32 file system criteria checks (Windows Only)
PerfDataMemorySize32768Size of performance data memory region. Will be rounded up to a multiple of the native os page size.
PerfDataSamplingInterval50Data 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
PerfDataSaveToFilefalseSave PerfData memory to hsperfdata_ file on exit
PerfDisableSharedMemfalseStore performance data in standard memory
PerfMaxStringConstLength1024Maximum PerfStringConstant string length before truncation
PreInflateSpin10Number of times to spin wait before inflation
PreferInterpreterNativeStubsfalseUse always interpreter stubs for native methods invoked via interpreter
PrefetchCopyIntervalInBytes-1How far ahead to prefetch destination area (<= 0 means off)
PrefetchFieldsAhead-1How many fields ahead to prefetch in oop scan (<= 0 means off)
PrefetchScanIntervalInBytes-1How far ahead to prefetch scan area (<= 0 means off)
PreserveAllAnnotationsfalsePreserve RuntimeInvisibleAnnotations as well as RuntimeVisibleAnnotations
PreserveFramePointerfalse
PretenureSizeThreshold0设置让大于该阈值的对象直接分配在老年代(只对Serial、ParNew收集器有效),单位为字节
PrintAdaptiveSizePolicyfalse允许打印有关自适应生成大小的信息。
PrintCMSInitiationStatisticsfalseStatistics for initiating a CMS collection
PrintCMSStatistics0Statistics for CMS
PrintClassHistogramfalse在Control+C事件(SIGTERM)之后启用类实例直方图的打印。
PrintClassHistogramAfterFullGCfalse在FullGC后打印类实例直方图。
PrintClassHistogramBeforeFullGCfalse在FullGC前打印类实例直方图。
PrintCodeCachefalse在jvm停止的时候打印出codeCache的使用情况。
PrintCodeCacheOnCompilationfalse用于在方法每次被编译时输出code cache的使用情况。
PrintCommandLineFlagsfalsePrint flags specified on command line or set by ergonomics
PrintCompilationfalse每次编译方法时,通过向控制台打印消息,从JVM启用详细诊断输出。这使您可以查看实际编译的方法。
PrintConcurrentLocksfalsejava.util.concurrent在Control+C事件(SIGTERM)之后启用锁的打印。设置此选项等同于运行jstack -l命令或jcmd pid Thread.print -l命令,其中pid是当前Java进程标识符。
PrintFLSCensus0Census for CMS' FreeListSpace
PrintFLSStatistics0若该参数不为0,那么每次GC前后都会调用reportFreeListStatistics()方法打印出free list的统计信息。
PrintFlagsFinalfalse打印出XX选项在运行程序时生效的值
PrintFlagsInitialfalse打印出所有XX选项的默认值
PrintGCfalse等同于-verbose:gc表示打开简化的GC日志
PrintGCApplicationConcurrentTimefalse允许打印自上次暂停后经过的时间(例如,GC暂停)。
PrintGCApplicationStoppedTimefalse打印GC时线程的停顿时间
PrintGCCausetrueInclude GC cause in GC logging
PrintGCDateStampsfalse打印出GC发生的具体时间
PrintGCDetailsfalse在发生垃圾回收时打印内存回收日志,并在进程退出时输出当前内存各区域分配情况。
PrintGCIDfalse
PrintGCTaskTimeStampsfalse允许为每个GC工作线程任务打印时间戳。
PrintGCTimeStampsfalse打印GC发生时相对于JVM启动时的时间。
PrintHeapAtGCfalse每次GC前和GC后,都打印堆信息。
PrintHeapAtGCExtendedfalsePrints extended information about the layout of the heap when -XX:+PrintHeapAtGC is set
PrintHeapAtSIGBREAKtruePrint heap layout in response to SIGBREAK
PrintJNIGCStallsfalsePrint diagnostic message when GC is stalled by JNI critical section
PrintJNIResolvingfalseUsed to implement -v:jni
PrintOldPLABfalsePrint (old gen) promotion labs sizing decisions
PrintOopAddressfalseAlways print the location of the oop
PrintPLABfalsePrint (survivor space) promotion labs sizing decisions
PrintParallelOldGCPhaseTimesfalsePrint the time taken by each parallel old gc phase. PrintGCDetails must also be enabled.
PrintPromotionFailurefalse晋升失败时打印日志。
PrintReferenceGCfalsePrint times spent handling reference objects during GC (enabled only when PrintGCDetails)
PrintSafepointStatisticsfalseprint statistics about safepoint synchronization
PrintSafepointStatisticsCount300total number of safepoint statistics collected before printing them out
PrintSafepointStatisticsTimeout-1print safepoint statistics only when safepoint takes more than PrintSafepointSatisticsTimeout in millis
PrintSharedArchiveAndExitfalse
PrintSharedDictionaryfalse
PrintSharedSpacesfalsePrint usage of shared spaces
PrintStringDeduplicationStatisticsfalse打印详细的重复数据删除统计信息。
PrintStringTableStatisticsfalseprint statistics about the StringTable and SymbolTable
PrintTLABfalsePrint various TLAB related information
PrintTenuringDistributionfalse让JVM在每次MinorGC后打印出当前使用的Survivor中对象的年龄分布。
PrintTieredEventsfalsePrint tiered events notifications
PrintVMOptionsfalsePrint flags that appeared on the command line
PrintVMQWaitTimefalsePrints out the waiting time in VM operation queue
PrintWarningstruePrints JVM warnings to output stream
ProcessDistributionStride4Stride through processors when distributing processes
ProfileInterpretertrueProfile at the bytecode level during interpretation
ProfileIntervalsfalsePrints profiles for each interval (see ProfileIntervalsTicks)
ProfileIntervalsTicks100# of ticks between printing of interval profile (+ProfileIntervals)
ProfileMaturityPercentage20number of method invocations/branches (expressed as % of CompileThreshold) before using the method's profile
ProfileVMfalseProfiles ticks that fall within VM (either in the VM Thread or VM code called through stubs)
ProfilerPrintByteCodeStatisticsfalsePrints byte code statictics when dumping profiler output
ProfilerRecordPCfalseCollects tick for each 16 byte interval of compiled code
PromotedPadding3How much buffer to keep for promotion failure
QueuedAllocationWarningCount0Number of times an allocation that queues behind a GC will retry before printing a warning
RTMRetryCount5RTM锁定代码将在中止或忙碌时重试此选项指定的次数,然后再回退到正常锁定机制。必须启用UseRTMLocking才能生效。
RangeCheckEliminationtrueSplit loop iterations to eliminate range checks
ReadPrefetchInstr0Prefetch instruction to prefetch ahead
ReassociateInvariantstrueEnable reassociation of expressions with loop invariants.
ReduceBulkZeroingtrueWhen bulk-initializing, try to avoid needless zeroing
ReduceFieldZeroingtrueWhen initializing fields, try to avoid needless zeroing
ReduceInitialCardMarkstrueWhen initializing fields, try to avoid needless card marks
ReduceSignalUsagefalseReduce the use of OS signals in Java and/or the VM
RefDiscoveryPolicy0Whether reference-based(0) or referent-based(1)
ReflectionWrapResolutionErrorstrueTemporary flag for transition to AbstractMethodError wrapped in InvocationTargetException.
RegisterFinalizersAtInittrueRegister finalizable objects at end of Object. or after allocation
RelaxAccessControlCheckfalse在Class校验器中,放松对访问控制的检查,作用与reflection里的setAccessible类似。
ReplayDataFile
RequireSharedSpacesfalseRequire shared spaces in the permanent generation
ReservedCodeCacheSize50331648设置JIT编译代码的最大代码缓存大小(以字节为单位)。
ResizeOldPLABtrueDynamically resize (old gen) promotion labs
ResizePLABtrueDynamically resize (survivor space) promotion labs
ResizeTLABtrueDynamically resize tlab size for threads
RestoreMXCSROnJNICallsfalseRestore MXCSR when returning from JNI calls
RestrictContendedtrue
RewriteBytecodestrueAllow rewriting of bytecodes (bytecodes are not immutable)
RewriteFrequentPairstrueRewrite frequently used bytecode pairs into a single bytecode
SafepointPollOffset256Offset added to polling address (Intel only)
SafepointSpinBeforeYield2000(Unstable)
SafepointTimeoutfalse启用线程Safepoint超时
SafepointTimeoutDelay10000线程Safepoint超时时间,单位毫秒
ScavengeBeforeFullGCtrue在每个完整GC之前启用年轻代的GC。
SelfDestructTimer0Will cause VM to terminate after a given time (in minutes) (0 means off)
SharedBaseAddress2^35
SharedClassListFile
SharedMiscCodeSize122880Size of the shared code area adjacent to the heap (in bytes)
SharedMiscDataSize4194304Size of the shared data area adjacent to the heap (in bytes)
SharedReadOnlySize16777216Size of read-only space in permanent generation (in bytes)
SharedReadWriteSize16777216Size of read-write space in permanent generation (in bytes)"
ShowMessageBoxOnErrorfalseKeep process alive on VM fatal error
SoftRefLRUPolicyMSPerMB1000设置软引用在上次使用后在堆上保持活动状态的时间(以毫秒为单位)。
SpecialEncodeISOArraytrue
SplitIfBlockstrueClone compares and control flow through merge points to fold some branches
StackRedPages1Number of red zone (unrecoverable overflows) pages
StackShadowPages20Number of shadow zone (for overflow checking) pages this should exceed the depth of the VM and native call stack
StackTraceInThrowabletrue
StackYellowPages2Number of yellow zone (recoverable overflows) pages
StartAttachListenerfalseAlways start Attach Listener at VM startup
StarvationMonitorInterval200Pause between each check in ms
StressLdcRewritefalseForce ldc -> ldc_w rewrite during RedefineClasses
StringDeduplicationAgeThreshold3String达到指定年龄的对象被视为重复数据删除的候选对象。对象的年龄是对垃圾收集存活多少次的度量。
StringTableSize60013Number of buckets in the interned String table
SuppressFatalErrorMessagefalseDo NO Fatal Error report [Avoid deadlock]
SurvivorPadding3How much buffer to keep for survivor overflow
SurvivorRatio8Eden Space与Suvivor Space的比例,默认配置下,每个Suvivor Space占整个年轻代的1/10
SuspendRetryCount50Maximum retry count for an external suspend request
SuspendRetryDelay5Milliseconds to delay per retry (* current_retry_count)
SyncFlags0(Unsafe,Unstable) Experimental Sync flags
SyncKnobs (Unstable) Various monitor synchronization tunables
SyncVerbose0(Unstable)
TLABAllocationWeight35Allocation averaging weight
TLABRefillWasteFraction64Max TLAB waste at a refill (internal fragmentation)
TLABSize0设置线程局部分配缓冲区(TLAB)的初始大小(以字节为单位)。
TLABStatstruePrint various TLAB related information
TLABWasteIncrement4Increment allowed waste at slow allocation
TLABWasteTargetPercent1Percentage of Eden that can be wasted
TargetPLABWastePct10target wasted space in last buffer as pct of overall allocation
TargetSurvivorRatio50设置年轻垃圾收集后使用的幸存者空间(0到100)的所需百分比。
TenuredGenerationSizeIncrement20Adaptive size percentage change in tenured generation
TenuredGenerationSizeSupplement80Supplement to TenuredGenerationSizeIncrement used at startup
TenuredGenerationSizeSupplementDecay2Decay factor to TenuredGenerationSizeIncrement
ThreadPriorityPolicy00 : 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.
ThreadPriorityVerbosefalsePrint priority changes
ThreadSafetyMargin52428800Thread safety margin is used on fixed-stack LinuxThreads (on Linux/x86 only) to prevent heap-stack collision. Set to 0 to disable this feature
ThreadStackSize1024线程的栈大小(字节数),也可用-Xss来配置
ThresholdTolerance10Allowed collection cost difference between generations
Tier0BackedgeNotifyFreqLog10Interpreter (tier 0) invocation notification frequency.
Tier0InvokeNotifyFreqLog7Interpreter (tier 0) invocation notification frequency.
Tier0ProfilingStartPercentage200Start profiling in interpreter if the counters exceed tier 3 thresholds by the specified percentage
Tier23InlineeNotifyFreqLog20Inlinee invocation (tiers 2 and 3) notification frequency
Tier2BackEdgeThreshold0Back edge threshold at which tier 2 compilation is invoked
Tier2BackedgeNotifyFreqLog14C1 without MDO (tier 2) invocation notification frequency.
Tier2CompileThreshold0threshold at which tier 2 compilation is invoked
Tier2InvokeNotifyFreqLog11C1 without MDO (tier 2) invocation notification frequency.
Tier3BackEdgeThreshold60000Back edge threshold at which tier 3 OSR compilation is invoked
Tier3BackedgeNotifyFreqLog13C1 with MDO profiling (tier 3) invocation notification frequency.
Tier3CompileThreshold2000Threshold at which tier 3 compilation is invoked (invocation minimum must be satisfied.
Tier3DelayOff2If C2 queue size is less than this amount per compiler thread allow methods compiled at tier 2 transition to tier 3
Tier3DelayOn5If C2 queue size grows over this amount per compiler thread stop compiling at tier 3 and start compiling at tier 2
Tier3InvocationThreshold200Compile if number of method invocations crosses this threshold
Tier3InvokeNotifyFreqLog10C1 with MDO profiling (tier 3) invocation notification frequency.
Tier3LoadFeedback5Tier 3 thresholds will increase twofold when C1 queue size reaches this amount per compiler thread
Tier3MinInvocationThreshold100Minimum invocation to compile at tier 3
Tier4BackEdgeThreshold40000Back edge threshold at which tier 4 OSR compilation is invoked
Tier4CompileThreshold15000Threshold at which tier 4 compilation is invoked (invocation minimum must be satisfied.
Tier4InvocationThreshold5000Compile if number of method invocations crosses this threshold
Tier4LoadFeedback3Tier 4 thresholds will increase twofold when C2 queue size reaches this amount per compiler thread
Tier4MinInvocationThreshold600Minimum invocation to compile at tier 4
TieredCompilationtrue启用分层编译。
TieredCompileTaskTimeout50Kill compile task if method was not used within given timeout in milliseconds
TieredRateUpdateMaxTime25Maximum rate sampling interval (in milliseconds)
TieredRateUpdateMinTime1Minimum rate sampling interval (in milliseconds)
TieredStopAtLevel4Stop at given compilation level
TimeLinearScanfalsedetailed timing of LinearScan phases
TraceBiasedLockingfalseTrace biased locking in JVM
TraceClassLoadingfalse监控类的加载
TraceClassLoadingPreorderfalse跟踪所有加载的引用类
TraceClassPathsfalse
TraceClassResolutionfalse跟踪常量池的变化
TraceClassUnloadingfalse跟踪类的卸载
TraceDynamicGCThreadsfalseTrace the dynamic GC thread usage
TraceGen0TimefalseTrace accumulated time for Gen 0 collection
TraceGen1TimefalseTrace accumulated time for Gen 1 collection
TraceJVMTI Trace flags for JVMTI functions and events
TraceLoaderConstraintsfalse跟踪类加载器约束的相关信息
TraceMetadataHumongousAllocationfalse
TraceMonitorInflationfalseTrace monitor inflation in JVM
TraceParallelOldGCTasksfalseTrace multithreaded GC activity
TraceRedefineClasses0Trace level for JVMTI RedefineClasses
TraceSafepointCleanupTimefalseprint the break down of clean up tasks performed during safepoint
TraceSharedLookupCachefalse
TraceSuspendWaitFailuresfalseTrace external suspend wait failures
TrackedInitializationLimit50When initializing fields, track up to this many words
TransmitErrorReportfalseEnable error report transmission on erroneous termination
TrapBasedNullChecksfalse
TrapBasedRangeChecksfalse
TypeProfileArgsLimit2
TypeProfileLevel111
TypeProfileMajorReceiverPercent90% of major receiver type to all profiled receivers
TypeProfileParmsLimit2
TypeProfileWidth2number of receiver types to record in call/cast profile
UnguardOnExecutionViolation0Unguard page and retry on no-execute fault (Win32 only) 0=off, 1=conservative, 2=aggressive
UnlinkSymbolsALotfalseunlink unreferenced symbols from the symbol table at safepoints
Use486InstrsOnlyfalseUse 80486 Compliant instruction subset
UseAESfalse为Intel,AMD和SPARC硬件启用基于硬件的AES内在函数。
UseAESIntrinsicsfalse同上一起使用。
UseAVX99Highest supported AVX instructions set on x86/x64
UseAdaptiveGCBoundaryfalseAllow young-old boundary to move
UseAdaptiveGenerationSizePolicyAtMajorCollectiontrueUse adaptive young-old sizing policies at major collections
UseAdaptiveGenerationSizePolicyAtMinorCollectiontrueUse adaptive young-old sizing policies at minor collections
UseAdaptiveNUMAChunkSizingtrueEnable adaptive chunk sizing for NUMA
UseAdaptiveSizeDecayMajorGCCosttrueAdaptive size decays the major cost for long major intervals
UseAdaptiveSizePolicytrue使用自适应自动调整空间大小,即JVM会自动调整年轻代与老年代的比例、Eden Space与Suvivor Space比例来达到性能目标,GC处理优先级是MaxGCPauseMillis最高,GCTimeRatio次之,其它的空间大小配置优先级最低
UseAdaptiveSizePolicyFootprintGoaltrueUse adaptive minimum footprint as a goal
UseAdaptiveSizePolicyWithSystemGCfalseUse statistics from System.GC for adaptive size policy
UseAddressNopfalseUse '0F 1F [addr]' NOP instructions on x86 cpus
UseAltSigsfalse为了防止与其他发送信号的应用程序冲突,允许使用候补信号替代 SIGUSR1和SIGUSR2
UseAutoGCSelectPolicyfalseUse automatic collection selection policy
UseBMI1Instructionsfalse
UseBMI2Instructionsfalse
UseBiasedLockingtrue启用偏向锁
UseBimorphicInliningtrueProfiling based inlining for two receivers
UseBoundThreadstrue绑定所有的用户线程到内核线程, 减少线程进入饥饿状态(得不到任何cpu time)的次数。
UseBsdPosixThreadCPUClockstrue
UseCLMULfalse
UseCMSBestFittrueUse CMS best fit allocation strategy
UseCMSCollectionPassingtrueUse passing of collection from background to foreground
UseCMSCompactAtFullCollectiontrueCMS在FullGC前进行老年代的内存碎片整理
UseCMSInitiatingOccupancyOnlyfalseCMS会根据历史记录,预测老年代还需要多久填满及进行一次回收所需要的时间。在老年代空间用完之前,CMS可以根据自己的预测自动执行垃圾回收。若设置该值为true,则关闭该预测。
UseCRC32Intrinsicsfalse
UseCodeCacheFlushingtrue是否在code cache满的时候先尝试清理一下,如果还是不够用再关闭编译。
UseCompilertrueuse compilation
UseCompilerSafepointstrueStop at safepoints in compiled code
UseCompressedClassPointersfalse启用压缩类指针(对象中指向类元数据的指针会被压缩成32位)
UseCompressedOopsfalse启用压缩对象指针(堆中对象指针会被压缩成32位)
UseConcMarkSweepGCfalse开启CMS收集器收集老年代,新生代默认使用并行收集器。
UseCondCardMarkfalse在更新卡表之前,可以检查卡是否已经标记。
UseCountLeadingZerosInstructionfalseUse count leading zeros instruction
UseCountTrailingZerosInstructionfalse
UseCountedLoopSafepointsfalse强制在Counted loop循环回跳之前插入Safepoint,也就是说即使循环比较短,JVM也会帮忙插入Safepoint了,用于防止大循环执行时间过长导致进入Safepoint卡住的问题。但是这个参数在JDK8上是有Bug的,可能会导致JVM Crash,而且是到JDK9才修复的,具体参考JDK-8161147。
UseCounterDecaytrue开启方法调用计数器的热度衰减。
UseDivModtrueUse combined DivMod instruction if available
UseDynamicNumberOfGCThreadsfalseDynamically choose the number of parallel threads parallel gc will use
UseFPUForSpillingfalseSpill integer registers to FPU instead of stack when possible
UseFastAccessorMethodstrue优化原始类型的getter方法性能
UseFastEmptyMethodstrueUse fast method entry code for empty methods
UseFastJNIAccessorstrueUse optimized versions of GetField
UseFastStosbfalseUse fast-string operation for zeroing: rep stosb
UseG1GCfalse允许使用垃圾优先(G1)垃圾收集器。它是一个服务器式垃圾收集器,针对具有大量RAM的多处理器机器。它以高概率满足GC暂停时间目标,同时保持良好的吞吐量。G1收集器推荐用于需要大堆(大小约为6 GB或更大)且GC延迟要求有限的应用(稳定且可预测的暂停时间低于0.5秒)。
UseGCLogFileRotationfalsePrevent large gclog file for long running app. Requires -Xloggc:
UseGCOverheadLimittrue允许使用策略来限制在OutOfMemoryError引发异常之前JVM在GC上花费的时间比例。
UseGCTaskAffinityfalse保证每次工作线程被唤醒的时候争取拿到上次没有完成的工作。
UseHeavyMonitorsfalseuse heavyweight instead of lightweight Java monitors
UseHugeTLBFSfalse
UseInlineCachestrueUse Inline Caches for virtual calls
UseInterpretertrueUse interpreter for non-compiled methods
UseJumpTablestrueUse JumpTables instead of a binary search tree for switches
UseLWPSynchronizationtrue使用轻量级进程(内核线程)替换线程同步。
UseLargePagesfalse启用大内存页支持
UseLargePagesInMetaspacefalse在metaspace启用大内存页,依赖于UseLargePages参数
UseLargePagesIndividualAllocationfalseAllocate large pages individually for better affinity
UseLockedTracingfalseUse locked-tracing when doing event-based tracing
UseLoopCountertrueIncrement invocation counter on backward branch
UseLoopInvariantCodeMotiontrue
UseLoopPredicatetrueGenerate a predicate to select fast/slow loop versions
UseMathExactIntrinsicstrue
UseMaximumCompactionOnSystemGCtrueIn the Parallel Old garbage collector maximum compaction for a system GC
UseMembartrue(Unstable) Issues membars on thread state transitions
UseMontgomeryMultiplyIntrinsicfalse
UseMontgomerySquareIntrinsicfalse
UseMulAddIntrinsicfalse
UseMultiplyToLenIntrinsicfalse
UseNUMAfalse通过增加应用程序对低延迟内存的使用,在具有非均匀内存架构(NUMA)的计算机上实现应用程序的性能优化。
UseNUMAInterleavingfalseInterleave memory across NUMA nodes if available
UseNewLongLShiftfalseUse optimized bitwise shift left
UseOSErrorReportingfalseLet VM fatal error propagate to the OS (ie. WER on Windows)
UseOldInliningtrueEnable the 1.3 inlining strategy
UseOnStackReplacementtrueUse on stack replacement, calls runtime if invoc. counter overflows in loop
UseOnlyInlinedBimorphictrueDon't use BimorphicInlining if can't inline a second method
UseOprofilefalse
UseOptoBiasInliningtrueGenerate biased locking code in C2 ideal graph
UsePSAdaptiveSurvivorSizePolicytrueUse adaptive survivor sizing policies
UseParNewGCfalse针对年轻代使用多线程垃圾收集器(ParNew),可与CMS同时使用。在serial基础上实现的多线程收集器。
UseParallelGCfalse针对年轻代使用并行垃圾收集器(Parallel Scavenge) ,可以并行多个垃圾收集线程,但此时用户线程必须停止。不能与CMS一起使用,系统吞吐量使用优化,会有较长时间的应用暂停,后台系统任务可以使用该GC。
UseParallelOldGCfalse允许将并行垃圾收集器用于完整的GC。
UsePerfDatatrueFlag to disable jvmstat instrumentation for performance testing and problem isolation purposes.
UsePopCountInstructionfalseUse population count instruction
UseRDPCForConstantTableBasefalseUse Sparc RDPC instruction for the constant table base.
UseRTMDeoptfalse根据中止率自动调谐RTM锁定。该比率由-XX:RTMAbortRatio选项指定。如果中止事务的数量超过中止率,则包含锁定的方法将被取消优化并重新编译,并将所有锁定为正常锁定。必须启用UseRTMLockingf才生效。
UseRTMLockingfalse为所有膨胀的锁生成受限制的事务性内存(RTM)锁定代码,使用正常的锁定机制作为回退处理程序。RTM是英特尔TSX的一部分,它是x86指令集扩展,有助于创建多线程应用程序。RTM引入了新的指示XBEGIN,XABORT,XEND,和XTEST。
UseSHAfalse为SPARC硬件启用SHA加密散列函数的基于硬件的内在函数。
UseSHA1Intrinsicsfalse为SHA-1加密哈希函数启用内在函数。
UseSHA256Intrinsicsfalse为SHA-224和SHA-256加密哈希函数启用内在函数。
UseSHA512Intrinsicsfalse为SHA-384和SHA-512加密散列函数启用内在函数。
UseSHMfalse使JVM能够使用共享内存来设置大页面。
UseSSE99
UseSSE42Intrinsicsfalse
UseSerialGCfalse允许使用串行垃圾收集器。对于不需要垃圾收集的任何特殊功能的小型和简单应用程序,这通常是最佳选择。
UseSharedSpacestrueUse shared spaces in the permanent generation
UseSignalChainingtrueUse signal-chaining to invoke signal handlers installed by the application (Solaris & Linux only)
UseSquareToLenIntrinsicfalse
UseStoreImmI16trueUse store immediate 16-bits value instruction on x86
UseStringDeduplicationfalse启用字符串重复数据删除。要使用此选项,必须启用垃圾优先(G1)垃圾收集器。字符串重复数据删除String通过利用许多String对象相同的事实来减少Java堆上对象的内存占用。String相同的String对象可以指向并共享相同的字符数组,而不是每个对象指向其自己的字符数组。
UseSuperWordtrue允许将标量操作转换为超级字操作。UseSuperWord会在字节运算时启用布隆过滤器之类的特性,能在haswell架构的cpu上提高2倍以上的速度。
UseTLABtrue允许在年轻代空间中使用线程局部分配块(TLAB)。
UseThreadPrioritiestrue使用本地线程的优先级。
UseTypeProfiletrueCheck interpreter profile for historically monomorphic calls
UseTypeSpeculationtrue
UseUnalignedLoadStoresfalseUse SSE2 MOVDQU instruction for Arraycopy
UseVMInterruptibleIOfalse在solaris中,允许运行时中断线程。
UseXMMForArrayCopyfalseUse SSE2 MOVQ instruction for Arraycopy
UseXmmI2DfalseUse SSE2 CVTDQ2PD instruction to convert Integer to Double
UseXmmI2FfalseUse SSE2 CVTDQ2PS instruction to convert Integer to Float
UseXmmLoadAndClearUppertrueLoad low part of XMM register and clear upper part
UseXmmRegToRegMoveAllfalseCopy all XMM register bits when moving value between registers
VMThreadHintNoPreemptfalse(Solaris only) Give VM thread an extra quanta
VMThreadPriority-1The native priority at which the VM thread should run (-1 means no change)
VMThreadStackSize1024Non-Java Thread Stack Size (in Kbytes)
ValueMapInitialSize11Initial size of a value map
ValueMapMaxLoopSize8maximum size of a loop optimized by global value numbering
ValueSearchLimit1000Recursion limit in PhaseMacroExpand::value_from_mem_phi
VerifyMergedCPBytecodestrueVerify bytecodes after RedefineClasses constant pool merging
VerifySharedSpacesfalse
WorkAroundNPTLTimedWaitHang1(Unstable, Linux-specific) avoid NPTL-FUTEX hang pthread_cond_timedwait
YoungGenerationSizeIncrement20Adaptive size percentage change in young generation
YoungGenerationSizeSupplement80Supplement to YoungedGenerationSizeIncrement used at startup
YoungGenerationSizeSupplementDecay8Decay factor to YoungedGenerationSizeSupplement
YoungPLABSize4096Size of young gen promotion labs (in HeapWords)
ZeroTLABfalseZero out the newly created TLAB
hashCode5(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

参考资料

  1. https://www.cnblogs.com/z-sm/p/6253335.html
  2. https://docs.oracle.com/javase/8/docs/technotes/guides/vm/server-class.html
  3. https://www.iteye.com/blog/qingfeng825-1781617
  4. https://blog.csdn.net/lxlmycsdnfree/article/details/81531363
  5. https://blog.csdn.net/huanxianglove/article/details/90247994
  6. https://blog.csdn.net/foolishandstupid/article/details/77596050
  7. http://lovestblog.cn/blog/2015/05/07/system-gc/
  8. http://ifeve.com/jvm-cms-log/
  9. https://blog.csdn.net/lz710117239/article/details/78565926
  10. https://blog.csdn.net/shine0181/article/details/8533834
  11. https://www.cnblogs.com/moonandstar08/p/4924588.html
  12. https://blog.csdn.net/zero__007/article/details/52926366
  13. https://www.jianshu.com/p/a6f19189ec62
  14. https://www.jianshu.com/p/b99c9ef0eb16
  15. https://www.cnblogs.com/milton/p/6134251.html
  16. https://www.jianshu.com/p/92a5fbb33764
  17. 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/
  18. https://www.jianshu.com/p/7414fd6862c5
  19. https://blog.csdn.net/blueheart20/article/details/52050545
  20. http://www.voidcn.com/article/p-kowussju-brm.html
  21. https://www.iteye.com/blog/softbeta-1467379
  22. https://blog.csdn.net/jadar_ly/article/details/670751
  23. http://www.seotest.cn/jishu/27902.html
  24. https://www.jianshu.com/p/d3c3301740d0
  25. https://blog.csdn.net/pengzhouzhou/article/details/94516616
  26. https://blog.csdn.net/weixin_34255793/article/details/91666030
  27. https://www.cnblogs.com/syuf/p/10183683.html
  28. https://www.bbsmax.com/A/rV574r1XdP/
  29. https://my.oschina.net/Rayn/blog/842868
  30. https://www.jianshu.com/p/00a7a023adf3
  31. https://www.cnblogs.com/yingsong/p/5896207.html
  32. https://www.jianshu.com/p/f65eebe38382
  33. https://www.jianshu.com/p/5fbe42932f81
  34. http://www.voycn.com/index.php/article/mianshitishenrujiexisynchronizeddicengshixian
  35. https://blog.csdn.net/chenmh12/article/details/90256808
  36. https://toutiao.io/posts/hltb1e/preview
  37. https://blog.csdn.net/www_changer/article/details/82285842
  38. https://www.520mwx.com/view/61784
  39. https://www.jianshu.com/p/45b125e5ec61
  40. https://www.codercto.com/a/85400.html
  41. https://ifeve.com/useful-jvm-flags-part-7-cms-collector/
  42. http://www.chepoo.com/application-pressure-promotion-failed.html
  43. https://juejin.im/entry/5c382ce9e51d45515f24521c
  44. https://www.jianshu.com/p/2a1b2f17d3e4
  45. https://www.jianshu.com/p/be5389ca93f7
  46. https://www.jianshu.com/p/12eda04e6f87
  47. https://blog.csdn.net/foolishandstupid/article/details/77430875
  48. https://www.jianshu.com/p/832fc4d4cb53
  49. https://blog.csdn.net/yxc135/article/details/12068177
  50. https://blog.csdn.net/weixin_39267363/article/details/100415791
  51. https://blog.csdn.net/sky1young/article/details/27063821
  52. https://www.cnblogs.com/beichenroot/p/11134409.html
  53. https://www.jianshu.com/p/0964124ae822
  54. https://stackoverflow.com/questions/5792049/xxonoutofmemoryerror-kill-9-p-problem
  55. https://blog.csdn.net/maosijunzi/article/details/46410697
  56. https://www.jianshu.com/p/0b8a9d137ee7
  57. https://cloud.tencent.com/developer/article/1486792
  58. https://www.cnblogs.com/BlueStarWei/p/9358757.html
  59. https://www.jianshu.com/p/5638c378a910
  60. https://blog.csdn.net/qq_26222859/article/details/80546917
  61. 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/
  62. https://www.jianshu.com/p/871b993fb3ad
  63. http://www.itkeyword.com/doc/5667377716363278222/Windows-XP-TomcatJVMJava
  64. https://blog.csdn.net/qq_27529917/article/details/86978237
  65. https://segmentfault.com/a/1190000007815623
  66. https://www.jiankunking.com/java-jvm-gc-g1-note.html
  67. https://mp.weixin.qq.com/s/FHY0MelBfmgdRpT4zWF9dQ
  68. https://www.cnblogs.com/ityouknow/p/5614961.html
  69. https://blog.csdn.net/qq_34446485/article/details/80968685
  70. https://www.2cto.com/kf/201806/757352.html
  71. https://www.jianshu.com/p/29c20f0684d0
  72. https://www.cnblogs.com/iceAeterNa/p/4878112.html
  73. https://www.zhihu.com/question/57212072
  74. http://www.hackerav.com/?post=43633
  75. https://blog.homurax.com/2018/09/20/heap-space/
  76. https://stackoverflow.com/questions/32503669/why-does-the-jvm-have-a-maximum-inline-depth
  77. https://blog.csdn.net/xhh198781/article/details/41622925
  78. https://www.jianshu.com/p/c46f6fff17cb
  79. https://zhuanlan.zhihu.com/p/28505703
  80. https://my.oschina.net/Rayn/blog/1510535
  81. https://blog.csdn.net/bdx_hadoop_opt/article/details/34101365
  82. https://my.oschina.net/foxty/blog/1934968
  83. https://blog.csdn.net/yanguz/article/details/84536440
  • Java

    Java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的。Java 技术具有卓越的通用性、高效性、平台移植性和安全性。

    3165 引用 • 8206 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...