【无标题】

1、 系统并发量比较大,频繁发生Young GC,但是每次发生Young GC之后存活对象比较多,而Survivor内存配置不合理,放不下Young GC的存活对象,导致Young GC之后存活对象直接存放在老年代,从而导致老年代内存不足触发Full GC。

解决方式:通过jstat观察GC情况,合理调整新生代内存以及Eden区Survivor区占比。

2、系统频繁创建的大对象直接分配到老年代,导致老年代内存不足触发Full GC。

解决方式:其实这种一般是代码编写不恰当导致的,比如有一些导出的功能,直接select * from xxx,全量导出,导致创建大对象,对于这种情况,一般都是优化代码。
具体步骤:
(1)通过jstat观察GC情况。
(2)通过jmap导出堆内存快照,然后在jvisualvm或者MAT进行分析。

3、系统发生了内存泄露,创建了大量对象,但是无法回收,导致Young GC之后达到15年岁年龄存放到老年代,久之老年代内存不足导致Full GC。

解决方式:通常也是代码编写不合理导致内存泄露,对于这种情况,一般都是优化代码。
具体步骤:
(1)通过jstat观察GC情况。
(2)通过jmap导出堆内存快照,然后在jvisualvm或者MAT进行分析。

4、元空间(永久代)加载太多类触发Full GC。

解决方式:一般都是自定义类加载器频繁加载外部类或者JVM动态代理导致的元空间内存不足触发Full GC,可以通过优化代码解决。

5、代码存在手动触发Full GC的代码,如System.gc()。

解决方式: 通过JVM配置关闭手动GC,-XX:+DisableExplicitGC。

转 https://greaterway.cn/archives/pin-fan-fa-sheng-fullgc-de-ji-zhong-chang-jian-yuan-yin

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值