垃圾回收整理

担保机制

Minor gc前需进行担保机制校验,发现老年代剩余连续空间小于Eden区和Survice区总和,触发担保失败。
如果老年代剩余连续空间也小于每次晋升到老年代的平均大小,这是就会Full gc。
反之,会尝试进行Minor gc,存活的对象当Survice放不下时就放入老年代,老年代再放不下就Full gc

一般Full Gc场景

  1. Minor gc中把存活对象复制到Survice区,因为Survice区太小导致对象晋升到老年代。过不了多久,老年代的剩余大小无法通过过担保机制校验,可能导致Full gc
    解决方法: -XX:SurvivorRatio 调大surviceRatio比例
    弊端: Eden变小,minorgc变得频繁,吞吐量下降。

  2. 新生代太小,导致Minor gc频繁,对象经过多次gc没有被回收,过了指定年龄,晋升到老年代。
    解决方法: -Xmn 调整新生代大小
    弊端:新生代变大导致单次minorgc停顿时间变长。

常用工具

查看内存快照,比对多次内存快照可以找出内存泄漏的问题

jmap -dump:format=b,file=heapdump.phrof pid

实时查看垃圾回收情况
jstat -gc PID 2000

打印垃圾回收日志

-XX:+PrintGCDetails

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值