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

2021-08-28  本文已影响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频率, 可以适当增大新生代空间(注意要保证老年代空间不变); 反之亦然;

上一篇下一篇

猜你喜欢

热点阅读