JVM调优--经验总结

原文网址:JVM调优--经验总结_IT利刃出鞘的博客-CSDN博客

简介

本文介绍JVM调优的一些常用经验。

正常的GC频率及时间

GC耗时太长、GC次数太多会影响进程的性能,导致进程响应变慢,或者无法响应。

正常的GC频率

正常的频率

YGC:10秒1次。

FGC:1天1次以内。

频率的优化

YGC的频率优化

  • 如果YoungGC频率远低于这个值,例如20秒1次,30秒1次,甚至60秒1次。这种情况下,JVM相当空闲,处于基本上无事可做的状态。建议缩容,减少服务器浪费;
  • 如果YoungGC频率远低于这个值,例如1秒/次,甚至1秒/好多次。这种情况下,JVM相当繁忙,建议按照如下步骤进行初步症断:
    • 检查Young区,Young区在整个堆占比在25%~40%比较合理,如果Young区太小,建议扩大Xmn。
    • 检查SurvivorRatio,保持默认值8即可,Eden:S0:S1=8:1:1是一个比较合理的值;

正常的GC时间

YGC:100ms以内

FGC:1秒以内

频繁FGC 的常见原因

  1. 大对象
    1. 系统一次性加载了过多数据到内存中(比如SQL查询未做分页),导致大对象进入了老年代。
  2. 内存泄漏
    1. 频繁创建了大量对象,但是无法被回收(比如IO对象使用完后未调用close方法释放资源),先引发FGC,最后导致OOM.
  3. 程序频繁生成一些长生命周期的对象
    1. 当这些对象的存活年龄超过分代年龄时便会进入老年代,最后引发FGC. (即本文中的案例)
  4. 程序BUG
    1. 程序BUG导致动态生成了很多新类,使得 Metaspace 不断被占用,先引发FGC,最后导致OOM. 代码中显式调用了gc方法,包括自己的代码甚至框架中的代码。
  5. JVM参数设置问题
    1. 包括总内存大小、新生代和老年代的大小、Eden区和S区的大小、元空间大小、垃圾回收算法等等。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IT利刃出鞘

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值