深入浅出JVM之总结

  1. 传统项目有可能遇到的Jvm问题:服务单点故障,下载功能遇到问题

  2. Minor GC触发条件:当Eden区满时,触发Minor GC

  3. Full GC触发条件

    1. 调用System.gc()

      此方法的调用是建议JVM进行Full GC,虽然只是建议而非一定,但很多情况下它会触发Full GC。因此,强烈建议能不使用此方法就不要使用,让虚拟机自己去管理内存。可通过-XX:+DisableExplicitGC来禁止RMI调用System.gc()。

    2. 老年代空间不足

      老年代空间不足的常见场景为前面所讲的大对象直接进入老年代、长期存活的对象进入老年代等,当执行Full GC后空间仍然不足,则抛出OutOfMemoryError。为避免以上原因引起的Full GC,调优阶段应尽量做到让对象在Minor GC阶段被回收、让新生对象在新生代多存活一段时间以及不要创建过大对象及数组。

    3. 空间分配担保失败

      使用复制算法的Minor GC需要老年代的内存空间作为担保,如果出现了HandlePromotionFailure担保失败,则会触发Full GC。

  4. 互联网项目有可能遇到的Jvm问题:容易出现性能瓶颈、容易出现线程溢出、容易出现内存溢出

  5. 死锁问题:通过jstack -m或者jconsole、jvisualVM检查

  6. 堆内存泄漏:

    1. 现象:出现OOM或者Full GC,heap使用率明显上升,经常达到Xmx
    2. Full GC正常出现的频率大概为一天一到两次
  7. 堆外内存泄漏(Rpc会使用到堆外内存)

    1. 现象:heap使用率很低,但是出现了OOM或者Full GC
    2. 解决方案:可以使用btrace跟踪DirectByteBuffer的构造函数来定位
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值