美文网首页
深入理解java虚拟机5-如何设置jvm各分代的大小

深入理解java虚拟机5-如何设置jvm各分代的大小

作者: 兮兮码字的地方 | 来源:发表于2021-08-28 18:25 被阅读0次

    如何设置jvm各分代的大小?

    1.吞吐量、延迟、内存占用这三个指标可以任意选择两个来作为调优目的,这是'GC调优的3选2原则'.

    2.关注吞吐量和延迟的应用应该把-Xms和-Xmx设定为同一值.因为拓展和缩减新生代或老年代空间都需要Full GC, 这会降低程序的吞吐量和增加延迟.

    3. 堆(老年代)的活跃数据大小: 老年代稳定占用的空间大小, 可以通过GC日志估算, 最好在程序出于稳定运行后, 多次Full GC后再查看, 可手动使用 jmap -histo:live pid 来触发Full GC.

    4.初始堆的大小设计法则:

    -Xms和-Xmx设置为老年代活跃数据大小的3~4倍;

    -Xmn新生代空间大小为老年代活跃数据大小的1~1.5倍; 老年代为老年代活跃数据大小的2~3倍;

    Eden与Survivor的比例则是根据Survivor稳定后总的存活大小与Survivor利用率来计算, 默认利用率为50%(可设置), 所以Survivor大小至少为Survivor总的存活大小的两倍.调整Survivor大小时要注意保持Eden大小不变。

    5. 如果程序能忍受的停顿时间比在收集过程中观测的值更长, 想降低gc频率, 可以适当增大新生代空间(注意要保证老年代空间不变); 反之亦然;

    相关文章

      网友评论

          本文标题:深入理解java虚拟机5-如何设置jvm各分代的大小

          本文链接:https://www.haomeiwen.com/subject/ojwbiltx.html