暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

【每日一题】请归纳一下,常用的GC组合及GC调优策略有哪些?

学亮编程手记 2021-02-15
463


GC 调优策略


策略 1:将新对象预留在新生代,由于 Full GC 的成本远高于 Minor GC,因此尽可能将对象分配在新生代是明智的做法,实际项目中根据 GC 日志分析新生代空间大小分配是否合理,适当通过“-Xmn”命令调节新生代大小,最大限度降低新对象直接进入老年代的情况。

策略 2:大对象进入老年代,虽然大部分情况下,将对象分配在新生代是合理的。但是对于大对象这种做法却值得商榷,大对象如果首次在新生代分配可能会出现空间不足导致很多年龄不够的小对象被分配的老年代,破坏新生代的对象结构,可能会出现频繁的 full gc。因此,对于大对象,可以设置直接进入老年代(当然短命的大对象对于垃圾回收来说简直就是噩梦)。-XX:PretenureSizeThreshold
可以设置直接进入老年代的对象大小。

策略 3:合理设置进入老年代对象的年龄,-XX:MaxTenuringThreshold
设置对象进入老年代的年龄大小,减少老年代的内存占用,降低 full gc 发生的频率。

策略 4:设置稳定的堆大小,堆大小设置有两个参数:-Xms
初始化堆大小,-Xmx
最大堆大小。

策略5:注意: 如果满足下面的指标,则一般不需要进行 GC 优化:

MinorGC 执行时间不到50ms; Minor GC 执行不频繁,约10秒一次; Full GC 执行时间不到1s; Full GC 执行频率不算频繁,不低于10分钟1次。

GC常用组合





劝学警言

身处信息爆炸时代,知识浩瀚如海洋。

然,如同图书馆,你可以入门,但不代表你就拥有它。

且,学而不思则罔,思而不学则殆;

学贵有恒,更需注重方式方法。切记三字箴言:恒、慢、悟——

恒:坚持不懈!最忌讳的就是三天打鱼两天晒网,一曝十寒;

慢:精雕细琢!慢工出细活,理论知识一定要吃透,知其所以然;

悟:明辨慎思!要善于固化知识,一定要有自己的理解,否则就如同将他人吐在地上的吃过的甘蔗,再捡起来嚼,味同嚼蜡一般,无任何滋味可言。

送君一句话:殚精竭虑,不如须臾之所学也。

愿君,好好学习,天天向上!

共勉之!





文章转载自学亮编程手记,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论