JVM中-Xms和-Xmx设置相同的好处

JVM中-Xms和-Xmx设置相同的好处,第1张

JVM中-Xms和-Xmx设置相同的好处
概念解释:
-Xms:
初始堆大小 默认物理内存的 1/64(小于1GB)
空余堆大小小于 40% 时,JVM就会增大堆直到 -Xmx 的最大限制

-Xmx:
-Xmx 最大堆大小 默认物理内存的 1/4(小于1GB)
空余堆大小大于 70% 时,JVM就会减少堆直到 -Xms 的最小限制


JVM垃圾回收的不足:
当堆内存使用情况变化时,并不是单纯的扩大和缩小堆内存就完事了。在此之前还会执行GC(垃圾回收) *** 作。
如果 -Xms 起初值设置的比较小,那么就会频繁触发GC *** 作。当GC *** 作无法释放更多内存时,才会进行内存的扩充。
我们都知道GC *** 作是需要耗时的,而且Full GC会引起“Stop the World”,也就是说会引起线程停止,不可避免就会引起性能问题。


相同值的好处:
面对上面的问题,为了避免在生产环境由于heap内存扩大或缩小导致应用停顿,降低延迟,
同时避免每次垃圾回收完成后JVM重新分配内存。所以,-Xmx和-Xms一般都是设置相等的。

当然,如果生产系统上线前有一段预热时间的话,也可以不设置相等。对于需要高吞吐量的应用来说,可以不在乎这种停顿,
比如一些后台的应用之类,那么内存可以适当调大一些。(停顿时间越长,吞吐量反而越大),需要根据具体情况权衡。

把两者设置为一致,是为了避免频繁扩容和GC释放堆内存造成的系统开销/压力


注意事项:
其实虽然设置为相同值有很多好处,但也会有一些不足。比如,如果两个值一样,会减少GC的 *** 作,
也意味着只有当JVM即将使用完时才会进行回收,此前内存会不停的增长。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/4016003.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-10-22
下一篇 2022-10-22

发表评论

登录后才能评论

评论列表(0条)

保存