《深入理解Java虚拟机》读书笔记之——HotSpot的算法实现

2017-11-25  本文已影响0人  湾湾_a434

1.1 枚举根节点

在HotSpot的实现中,利用OopMap数据结构来记录对象内什么偏移量是什么类型的数据之类的,JIT编译的时候也会记录。GC扫描的时候去扫描OopMap就可以了,而无需一个不漏地检查完所有执行上下文和全局的引用位置。

1.2 安全点

安全点
大多数垃圾收集器进行gc的时候,需要进行stop the world ,停止jvm所有的线程,只有所有线程都到达这个点的时候,才可以进行gc,这个点就是安全点。

对于gc收集器来讲,如何在gc时候快速到达安全点是一个关键点,有以下两种方式(现在基本都用的是主动式中断):

1.3 安全区域

在线程sleep或者blocked的时候是没办法主动轮询中断标志的,也就无法响应gc的中断请求,这种情况下,就诞生了安全域。

安全域:在一段代码里,引用关系不会变,在这段代码的任何地方gc都是安全的。

在线程执行到安全域的时候就标识自己已经进入安全域,然后jvm要gc的时候就不用管这些进入安全域的线程了,线程离开安全域的时候,会检测系统是否完成了GC。

上一篇下一篇

猜你喜欢

热点阅读