课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
垃圾回收机制是程序员在学习java编程开发的时候需要重点掌握的编程技术之一,而今天我们就通过案例分析来了解一下,java垃圾回收都有哪些优化方法。
GC调优原则
GC是有代价的,因此我们调优的根本原则是每一次GC都回收尽可能多的对象,也就是减少无用功。因此我们在做具体调优的时候,针对CMS和G1两种垃圾收集器,分别有一些相应的策略。
CMS收集器
对于CMS收集器来说,重要的是合理地设置年轻代和年老代的大小。年轻代太小的话,会导致频繁的MinorGC,并且很有可能存活期短的对象也不能被回收,GC的效率就不高。而年老代太小的话,容纳不下从年轻代过来的新对象,会频繁触发单线程FullGC,导致较长时间的GC暂停,影响Web应用的响应时间。
G1收集器
对于G1收集器来说,我不推荐直接设置年轻代的大小,这一点跟CMS收集器不一样,这是因为G1收集器会根据算法动态决定年轻代和年老代的大小。因此对于G1收集器,我们需要关心的是Java堆的总大小(-Xmx)。
此外G1还有一个较关键的参数是-XX:MaxGCPauseMillis=n,这个参数是用来限制大的GC暂停时间,目的是尽量不影响请求处理的响应时间。G1将根据先前收集的信息以及检测到的垃圾量,估计它可以立即收集的大区域数量,从而尽量保证GC时间不会超出这个限制。因此G1相对来说更加“智能”,使用起来更加简单。
【免责声明】本文系本网编辑部分转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与管理员联系,我们会予以更改或删除相关文章,以保证您的权益!更多内容请在707945861群中学习了解。