JVM中的重要参数

我们已经知道了有哪些垃圾收集器,那么它们在JDK中又是如何设置的呢?

参数功能
UseParNewGC使用ParNew + Serial Old
UseSerialGC虚拟机运行在Client模式下的默认值,是Serial + Serial Old
UseParallelGC虚拟机运行在Server模式下的默认值,Parallel Scavenge + Serial Old
UserParallelOldGC使用Parallel Scavenge + Parallel Old,追求吞吐量的的最佳配合
UseConcMarkSweepGCParNew + CMS + Serial Old组合的收集器,CMS运行期间预留的内存无法满足程序需要,就会出现一次Concurrent Mode Failure失败,这时虚拟机将启动后备预案。临时启用Serial Old收集器来重新进行老年代的垃圾收集。
ParallelGCThreads指定ParNew收集器的线程数目。
MaxGCPauseMillisParallel Scavenge中最大垃圾收集停顿时间,毫秒数。
GCTimeRatioParallel Scavenge中设置吞吐量大小的参数,例如设置为99,允许的最大垃圾收集时间就是:1/(1+99)。
UseAdaptiveSizePolicyParallel Scavenge中的参数,这是一个开关参数,会动态的调节新生代老年代中的参数,以提供合适的停顿时间或者最大的吞吐量。只需要设置基本的数据内存,如-Xms等。
CMSInitiatingOccupancyFraction设置CMS收集器在老年代空间被使用多少后触发垃圾收集。默认值为68%。
UseCMSCompactAtFullCollectionCMS收集器默认开启,在CMS收集器顶不住要进行FullGC时开启内存碎片的合并整理过程,内存整理的过程是无法并发的。空间碎片问题没有了,但停顿时间不得不变长。设置CMS收集器在完成垃圾收集后再启动一次内存碎片整理。
CMSFullGCsBeforeCompaction用于设置CMS收集器执行多少次不压缩的FullGC后,跟着来一次带压缩的(默认值为0,表示每次进入Full GC时都进行碎片整理)
SurvivorRatio新生代中Eden区与Survivor区域的比值
PretenureSizeThreshold大于这个参数的对象将直接进入老年代分配。
MaxTenuringThreshold晋升到老年代的年龄。
HandlePromotionFailure是否允许分配担保失败,即老年代的剩余空间不足以应付新生代的整个Eden和Survivor的所有对象都存活的极端情况。

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐