1回复
4年前
CMS的AbortablePreclean阶段的一个疑问
请教大家一个问题,希望大家帮我看一下我理解的对不对:
我看到在CMS AbortablePreclean阶段 有一个判断是 如果不满足 should_abort_preclean() 则退出循环,然后根据调用链
should_abort_preclean() <-- _abort_preclean <-- sample_eden() (条件1:新生代Eden区的内存使用量小于CMSScheduleRemarkEdenPenetration,默认是50%)
sample_eden() 是在进入AbortablePreclean阶段之前执行的,所以should_abort_preclean()在循环过程中并不会变化,所以是不是意味着上面所写的“条件1”起的作用其实只是决定会不会进入AbortablePreclean阶段,而一旦进入了,它因为不会再改变,所以理论上也与是否退出循环无关了。
2930 阅读