JVM GC原理及调优的基本思路,kafka数据存储原理

本文深入探讨了JVM的GC原理,重点关注CMS和G1收集器的调优策略。CMS中强调合理设置年轻代和年老代大小以避免频繁GC。G1则关注最大暂停时间目标,通过动态调整区域大小。通过一个Java堆设置过小导致频繁GC的例子,展示了如何通过调整堆大小解决问题,并使用GCViewer分析日志。总结指出,CMS和G1的调优需要迭代过程,G1适合管理较大Java堆。
摘要由CSDN通过智能技术生成

GC有代价,因此根本原则是每次GC都回收尽可能多的对象。

针对CMS和G1有相应策略。

CMS收集器


最重要的是合理地设置年轻代和年老代大小。

  • 年轻代太小,会导致频繁Minor GC,并且很有可能存活期短的对象也不能被回收,GC的效率就不高

  • 年老代太小,容纳不下从年轻代过来的新对象,会频繁触发单线程Full GC,导致较长时间的GC暂停,影响Web应用的响应时间。

G1收集器


不推荐直接设置年轻代大小,和CMS不不同,因为G1会根据算法动态决定年轻代和年老代大小。

因此对于G1,最关心Java堆总大小(-Xmx)。

-XX:MaxGCPauseMillis = n

限制最大GC暂停时间,以尽量不影响请求的响应时间。G1将根据先前收集信息及检测到的垃圾量,估计它可以立即收集的最大区域数量,从而尽量保证GC时间不会超出这个限制。因此G1更“智能”,使用更简单。

内存调优实战

==================================================&#

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值