JVM 配置常用参数有哪些?
-
垃圾回收参数-Xnoclassgc 是否对类进行回收-verbose:class -XX:+TraceClassUnloading 查看类加载和卸载信息-XX:SurvivorRatio Eden和其中一个survivor的比值-XX:PretenureSizeThreshold 大对象进入老年代的阈值,Serial和ParNew生效-XX:MaxTenuringThreshold 晋升老年代的对象年龄,默认15, CMS默认是4-XX:HandlePromotionFailure 老年代担保-XX:+UseAdaptiveSizePolicy动态调整Java堆中各个区域大小和进入老年代年龄-XX:ParallelGCThreads 并行回收的线程数-XX:MaxGCPauseMillis Parallel Scavenge参数,设置GC的最大停顿时间-XX:GCTimeRatio Parallel Scavenge参数,GC时间占总时间的比率,默认99%,即1%的GC时间-XX:CMSInitiatingOccupancyFraction,old区触发cms阈值,默认68%-XX:+UseCMSCompactAtFullCollection(CMS完成后是否进行一次碎片整理,停顿时间加长)-XX:CMSFullGCsBeforeCompaction(执行多少次不进行碎片整理的FullGC后进行一次带压缩的)-XX:+ScavengeBeforeFullGC,在fullgc前触发一次minorGC垃圾回收统计信息-XX:+PrintGC 输出GC日志-verbose:gc等同于上面那个-XX:+PrintGCDetails 输出GC的详细日志堆大小设置-Xmx:最大堆大小-Xms:初始堆大小(最小内存值)-Xmn:年轻代大小-XX:NewSize和-XX:MaxNewSize 新生代大小-XX:SurvivorRatio:3 意思是年轻代中Eden区与两个Survivor区的比值。注意Survivor区有两个。如:3,表示Eden:Survivor=3:2,一个Survivor区占整个年轻代的1/5-XX:NewRatio=4:设置年轻代(包括Eden和两个Survivor区)与年老代的比值(除去持久代)。设置为4,则年轻代与年老代所占比值为1:4,年轻代占整个堆栈的1/5-Xss栈容量 默认256k-XX:PermSize永久代初始值-XX:MaxPermSize 永久代最大值
-
JVM 配置常用参数
- 堆参数;
- 回收器参数;
- 项目中常用配置;
- 常用组合;
堆参数
回收器参数
如上表所示,目前主要有串行、并行和并发三种,对于大内存的应用而言,串行的性能太低,因此使用到的主要是并行和并发两种。并行和并发 GC 的策略通过
UseParallelGC
和UseConcMarkSweepGC
来指定,还有一些细节的配置参数用来配置策略的执行方式。例如:XX:ParallelGCThreads
,XX:CMSInitiatingOccupancyFraction
等。 通常:Young 区对象回收只可选择并行(耗时间),Old 区选择并发(耗 CPU)。项目中常用配置
备注:在Java8中永久代的参数
-XX:PermSize
和-XX:MaxPermSize
已经失效。常用组合