问十七:Stop-the-World和Safepoint的特点是什么?
Stop-the-World[GC用]
1、JVM由于要执行GC而停止应用程序的执行
2、任何一种GC算法中都会发生
3、多数GC优化都可以通过减少Stop-the-World发生的时间来提高程序性能,达到高吞吐,低停顿的特点
Safepoint[可达性分析用]
在可达性算法的可达性分析中,分析对象的引用必须在一个快照点进行,在这个点所有的线程都被冻结。不能出现在分析过程中对象的引用关系还产生变化的情况。需要确保程序具有安全性,因此设置了安全点。
一旦GC发生,都让所有的线程跑到最新的安全点,再停顿下来,如果有没到达的安全点的,就恢复线程,等待到达后再进行处理
1、分析过程中对象引用关系不会发生变化的点
2、产生SafaPoint的地方:方法调用,循环跳转,异常跳转等
3、安全点数量适中