次要gc集合是stw事件吗?

hsvhsicv  于 2021-07-08  发布在  Java
关注(0)|答案(2)|浏览(293)

gc需要为次要gc“停止世界”还是只为完全gc?据我所知,当eden中没有空间分配对象时,就会发生一个小gc,那么这是否意味着对于每个小gc都会有一个stw事件?

0ejtzxu1

0ejtzxu11#

答案是“视情况而定”。
对于大多数现代java收藏家来说,一个小的(young/eden空间)收藏品确实是一个止步世界的收藏品。这并不是一个年轻的空间被填满所触发的次要gc的直接逻辑结果(其他的策略也可以用来触发一个小gc,或者处理一个年轻的空间被填满)。。。它们是大多数javagc实现的方式。
一个例外是zgc,它不是分代的。因此,没有所谓的小收藏。相反,当gc被触发时,会有一个短时间(小于10ms)停止world事件,同时找到gc根。第二个例外是shenandoahgc,它同样不是分代的。
(当然,最初的Java1.1GC是一个标记清除收集器,它是非世代的,可以阻止世界的发展。)

vohkndzv

vohkndzv2#

读了几本书之后,我发现一个次要的gc总是一个stop the world事件,它会停止所有的应用程序线程,并且通常会有一个很短的持续时间,而对于完整的gc,gc暂停会花费相当多的时间,因为它会在年轻人和老年人身上运行。所以小gc和全gc总是阻止世界事件。

相关问题