HotSpot的算法实现
1.枚举根节点
执行时间的敏感:
GC ROOTs 节点:全局的引用(如常量或类静态属性)与执行上下文(如栈帧中的本地变量表)中
GC 停顿:分析过程中对象的引用关系不能变化,所以GC进行时停顿所有的Java线程(sun成为“Stop The World”)
在HotSpot中,使用一组OopMap的数据结构来得到哪些地方存放着对象引用。
2.安全点
程序只有在到达安全点时才暂停,个人理解:安全点开启GC,解决垃圾回收问题~比较浅!
(1)抢先式中断
(2)主动式中断 目前使用的
3.安全区域
简介:一段代码片段之中,引用关系不会变化。在这个区域中的任意地方开始GC都是安全的。可以看做扩展了Safepoint
总结:比较简单的了解了HopSpot是如何中断线程,进行GC操作的