JVM 配置常用参数有哪些?

发布于 2020-01-02 17:30:56
关注者
1
被浏览
1370
2 个回答
  • 面试哥
    面试哥 2020-04-17
    为面试而生,有面试问题,就找面试哥。
    垃圾回收参数
    -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 永久代最大值
  • 面试哥
    面试哥 2020-01-02
    为面试而生,有面试问题,就找面试哥。

    JVM 配置常用参数

    1. 堆参数;
    2. 回收器参数;
    3. 项目中常用配置;
    4. 常用组合;

    堆参数

    img

    回收器参数

    img

    如上表所示,目前主要有串行、并行和并发三种,对于大内存的应用而言,串行的性能太低,因此使用到的主要是并行和并发两种。并行和并发 GC 的策略通过 UseParallelGCUseConcMarkSweepGC 来指定,还有一些细节的配置参数用来配置策略的执行方式。例如:XX:ParallelGCThreadsXX:CMSInitiatingOccupancyFraction 等。 通常:Young 区对象回收只可选择并行(耗时间),Old 区选择并发(耗 CPU)。

    项目中常用配置

    备注:在Java8中永久代的参数-XX:PermSize-XX:MaxPermSize已经失效。

    img

    常用组合

    img

面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看