V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
cmai
V2EX  ›  程序员

堆的大小不会自动扩容了

  •  
  •   cmai · 2023-03-29 10:02:13 +08:00 · 2099 次点击
    这是一个创建于 590 天前的主题,其中的信息可能已经有所发展或是发生改变。

    JDK1.8 ,当我指定 SurvivorRatio 时,需要关闭 UseAdaptiveSizePolicy , 而当我关闭 UseAdaptiveSizePolicy ,堆的大小就固定下来了,除了更换垃圾收集器,还有别的办法解决吗?

     -Xmn1800m -Xms3000M -Xmx7168m -Xloggc:/data/logs/gc.log -XX:SurvivorRatio=8 -XX:-UseAdaptiveSizePolicy -Dserver.port=80
    
    10 条回复    2023-03-29 15:05:25 +08:00
    xhaiben
        1
    xhaiben  
       2023-03-29 10:23:52 +08:00
    没明白是什么意思,自动扩容是指想让年轻代的堆大小自动扩容吗? 如果是用的默认的 G1 的话,并不应该设置 SurvivorRatio 和 UseAdaptiveSizePolicy ,G1 有自己的参数
    cmai
        2
    cmai  
    OP
       2023-03-29 10:46:47 +08:00
    @xhaiben

    JDK8 的默认收集器不是 G1 ,通过 jinfo 命令可以看到用的是-XX:+UseParallelGC , 而 UseParallelGC 默认会打开 UseAdaptiveSizePolicy , 当开启了自适应策略的时候,出现过很多次它把 from 和 to 区的大小调整的只有 1M , 导致老年代堆积的很快,新生代的只要回收存活就会到老年代
    cmai
        3
    cmai  
    OP
       2023-03-29 10:48:07 +08:00
    所以我们需要让它不去更改 from 和 to 区的 1:8 的比例, 所以强制指定了 SurvivorRatio , 而指定了 SurvivorRatio 的同时需要关闭掉 UseAdaptiveSizePolicy , 否则不会生效 ,当我关闭 UseAdaptiveSizePolicy 的, 他不会再去调整老年代的大小了
    cmai
        4
    cmai  
    OP
       2023-03-29 10:49:31 +08:00
    也就是说, 他的堆在启动时就固定为了 -Xms 指定的 3000M , 即使老年代满了,频繁 full gc , 他也不会去扩容
    cmai
        5
    cmai  
    OP
       2023-03-29 10:58:46 +08:00
    或者大家有什么办法能让 from 、to 和 Eden 不会低于 1:1:8 的比例也可以
    wccc
        6
    wccc  
       2023-03-29 11:10:14 +08:00
    可以说说 为什么不更换 g1 的理由吗
    cmai
        7
    cmai  
    OP
       2023-03-29 11:25:22 +08:00
    @wccc 领导决定的,可能觉得试错成本很高吧,我们现在手里运维了大大小小一百多个应用, 毕竟没有人用过其他的收集器
    xhaiben
        8
    xhaiben  
       2023-03-29 11:54:02 +08:00
    ParallelGC 的优点就是并行和自适应调节。 如果自适应调节已经不满足你们的场景了,是不是该考虑换了。。做好测试灰度,风险应该不高。
    xiaohundun
        9
    xiaohundun  
       2023-03-29 13:58:26 +08:00
    不换不行喽
    cmai
        10
    cmai  
    OP
       2023-03-29 15:05:25 +08:00
    暂时告一段落,换 g1 了

    -Xmx3328m -Xloggc:/data/logs/gc.log -XX:+UseG1GC
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2791 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 13:23 · PVG 21:23 · LAX 05:23 · JFK 08:23
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.