美文网首页java虚拟机
Full Gc过程会发生stop the world,这里jvm

Full Gc过程会发生stop the world,这里jvm

作者: CodeKing2017 | 来源:发表于2018-07-17 23:41 被阅读22次

JVM有个叫做“安全点”和“安全区域”的东西,在发生GC时,所有的线程都会执行到“安全点”停下来。

在需要GC的时候,JVM会设置一个标志,当线程执行到安全点的时候会轮询检测这个标志,如果发现需要GC,则线程会自己挂起,直到GC结束才恢复运行。

还有另一种策略是在GC发生时,直接把所有线程都挂起,然后检测所有线程是否都在安全点,如果不在安全点则恢复线程的执行,等执行到安全点再挂起。

但是对于一些没有获得或无法获得CPU时间的线程,就没办法等到它执行到安全点了,所以这个时候只要这个线程是在安全区域的,也可以进行GC,安全区域是一段代码段,在这段代码段中对象的引用关系不会发生变化,所以这个时候进行GC也是安全的。

相关文章

网友评论

    本文标题:Full Gc过程会发生stop the world,这里jvm

    本文链接:https://www.haomeiwen.com/subject/ddjnpftx.html