https://www.cnblogs.com/ggjuc...
这篇文章说:
1 CMS是不会整理堆碎片的,因此为了防止堆碎片引起full gc,通过会开启CMS阶段进行合并碎片选项:
这意思是在CMS进行full gc后,如果有碎片又会引起新的full gc吗?
2 开启-XX:+CMSScavengeBeforeRemark选项,强制remark之前开始一次minor gc,减少remark的暂停时间
为何强制minor gc会减少remark暂停时间?
https://www.cnblogs.com/ggjuc...
这篇文章说:
这意思是在CMS进行full gc后,如果有碎片又会引起新的full gc吗?
为何强制minor gc会减少remark暂停时间?
问题二,在remark阶段,需要标记出活着的老年代对象。
存在被新生代对象引用的老年代对象,如果新生代对象很多,扫描过程耗时自然很长。
如果先执行一次ygc,gc掉无用的年轻代对象,扫描过程自然就变快了。
15 回答8.4k 阅读
8 回答6.2k 阅读
1 回答4k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答3.1k 阅读
2 回答3.8k 阅读
3 回答1.7k 阅读✓ 已解决
应该说碎片不是Full GC的直接原因, 内存不够才是. 碎片造成连续内存空间变少, 如果需要分配新的连续大块内存, 则会触发Full GC.
强制minor gc会减少remark暂停时间: 能回收的已经回收掉了, 自然不用再remark了.