堆内存分配
参数 | 描述 |
UseSerialGC | 虚拟机运行在Client模式下的默认值,打开此开关后,使用Serial+SerialOld的收集器组合进行内存回收 |
UseParNewGC | 使用ParNew+SerialOld的收集器组合。JDK9后不再支持 |
UseConcMarkSweepGC | 使用ParNew+CMS+SerialOld的收集器组合。SerialOld收集器将作为CMS收集器出现"Concurrent Mode Failure"失败后的后背收集器使用 |
Use Parallel GC | JDK9前Server模式下的默认值。使用Parallel Scavenge+SerialOld的收集器组合 |
UseParallelOldGC | 使用Parallel Scavenge+ParallelOld的收集器组合 |
SurvivorRatio | 新生代中Eden区域与Survivor区域的容量比值,默认为8,表示Eden:Survivor=8:1 |
PretenureSizeThreshold | 直接晋升到老年代的对象大小,设置这个参数后,大于该参数的对象将直接在老年代分配 |
MaxTenuringThreshold | 晋升到老年代的对象年龄。对象每经过一次Minor GC后,年龄就加1,当超过这个参数时就进入老年代。 HotSpot并不是永远要求对象的年龄达到该参数的值才晋升到老年代,当Survivor空间中相同年龄所有对象大小的总和大于Survivor空间的一半,年龄大于或等于该年龄的对象就直接进入老年代,无需等到-XX:MaxTenuringThreshold设定的年龄 |
UseAdaptiveSizePolicy | 动态调整Java堆中给个区域的大小以及进入老年代的年龄。 这个参数被激活后,就不需要人工指定-Xmn(新生代大小)、-XX:SurvivorRatio(Eden区域与Survivor区域的比例)、-XX:PretenureSizeThreshold(晋升老年代大小)等细节参数 |
HandlePromotionFailure | 是否允许分配担保失败。老年代最大连续空间不足以应付新生代所有对象都存活的计算情况。 |
Parallel GCThreads | 设置并行GC时进行内存回收的线程数 |
GCTimeRatio | GC时间占总时间比例,默认99,即允许1%的GC时间。仅在Parallel Scavenge收集器时生效 |
MaxGCPauseMillis | 在Parallel Scavenge收集器时,设置GC最大停顿时间;或在G1收集器时,设置G1收集过程目标时间,默认值200ms,不是硬性条件 |
CMSInitiatingOccupancyFraction | 设置CMS收集器在老年代空间被使用多少后触发垃圾收集,默认68%,仅在CMS收集器时生效 |
UseCMSCompactAtFullConllection | 设置CMS收集器在完成垃圾收集后是否进行一次内存碎片整理。仅在CMS收集器时生效,该参数JDK9废弃 |
CMSFullGCsBeforeCompaction | 设置CMS收集器在若干次垃圾收集后再进行一次内存碎片整理。仅在CMS收集器时生效,该参数JDK9废弃 |
UseG1GC | 使用G1收集器。JDK9后的Server模式默认值 |
G1HeapRegionSize=n | 设置Region大小,并非最终值 |
G1NewSizePercent | G1新生代最小值,默认5% |
G1MaxNewSizePercent | G1新生代最大值,默认60% |
ConcGCThreads=n | 并发标记、并发整理的执行线程数,不同的收集器,根据其能够并发的阶段,有不同的含义 |
InitiatingHeapOccupancyPercent | 设置并发标记周期的Java堆占用阈值。默认45% |
UseShenandoahGC | 使用Shenandoah收集器。OracleJDK不支持,OpenJDK12或其他支持Shenandoah中使用,需要-XX:UnlockExperimentalVMOptions配合使用 |
ShenandoahGCHeuristics | Shenandoah何时启动一次GC过程,可选值有adaptive、static、compact、passive、aggressive |
UseZGC | 使用ZGC收集器,需要-XX:UnlockExperimentalVMOptions配合使用 |
UseNUMA | 启用NUMA内存分配支持,目前只有Parallel和ZGC支持 |