JVM相关参数

it2025-04-29  26

堆内存分配

 

垃圾收集相关的常用参数 参数描述UseSerialGC虚拟机运行在Client模式下的默认值,打开此开关后,使用Serial+SerialOld的收集器组合进行内存回收UseParNewGC

使用ParNew+SerialOld的收集器组合。JDK9后不再支持

UseConcMarkSweepGC使用ParNew+CMS+SerialOld的收集器组合。SerialOld收集器将作为CMS收集器出现"Concurrent Mode Failure"失败后的后背收集器使用Use Parallel GCJDK9前Server模式下的默认值。使用Parallel Scavenge+SerialOld的收集器组合UseParallelOldGC使用Parallel Scavenge+ParallelOld的收集器组合SurvivorRatio新生代中Eden区域与Survivor区域的容量比值,默认为8,表示Eden:Survivor=8:1PretenureSizeThreshold直接晋升到老年代的对象大小,设置这个参数后,大于该参数的对象将直接在老年代分配MaxTenuringThreshold

晋升到老年代的对象年龄。对象每经过一次Minor GC后,年龄就加1,当超过这个参数时就进入老年代。

HotSpot并不是永远要求对象的年龄达到该参数的值才晋升到老年代,当Survivor空间中相同年龄所有对象大小的总和大于Survivor空间的一半,年龄大于或等于该年龄的对象就直接进入老年代,无需等到-XX:MaxTenuringThreshold设定的年龄

UseAdaptiveSizePolicy

动态调整Java堆中给个区域的大小以及进入老年代的年龄。

这个参数被激活后,就不需要人工指定-Xmn(新生代大小)、-XX:SurvivorRatio(Eden区域与Survivor区域的比例)、-XX:PretenureSizeThreshold(晋升老年代大小)等细节参数

HandlePromotionFailure

是否允许分配担保失败。老年代最大连续空间不足以应付新生代所有对象都存活的计算情况。

Parallel GCThreads设置并行GC时进行内存回收的线程数GCTimeRatioGC时间占总时间比例,默认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大小,并非最终值G1NewSizePercentG1新生代最小值,默认5%G1MaxNewSizePercentG1新生代最大值,默认60%ConcGCThreads=n并发标记、并发整理的执行线程数,不同的收集器,根据其能够并发的阶段,有不同的含义InitiatingHeapOccupancyPercent设置并发标记周期的Java堆占用阈值。默认45%UseShenandoahGC使用Shenandoah收集器。OracleJDK不支持,OpenJDK12或其他支持Shenandoah中使用,需要-XX:UnlockExperimentalVMOptions配合使用ShenandoahGCHeuristicsShenandoah何时启动一次GC过程,可选值有adaptive、static、compact、passive、aggressiveUseZGC使用ZGC收集器,需要-XX:UnlockExperimentalVMOptions配合使用UseNUMA启用NUMA内存分配支持,目前只有Parallel和ZGC支持

 

 

 

最新回复(0)