🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
### HotSpot算法实现 * GC停顿\(Stop The World\) * OopMap存放全局对象引用,利用它可以快速准确完成GC Roots枚举 #### 安全点\(Safepoint\) 意思就是在这个点, 所有GC Root的状态都是已知并且heap里的对象是一致的; 在这个点进行GC时, 所有的线程都需要block住, 这就是\(STW\)Stop The World #### GC停顿方案 * 抢先式中断\(Preemptive Suspension\) * 主动式中断\(Voluntary Suspension\) #### 安全区域\(Safe Region\) **安全区域**是指在一段代码片段之中,引用关系不会发生变化,在这个区域的任意地方开始GC都是安全的 #### 重点 * 线程处于Sleep状态或Blocked状态时无法响应JVM的中断请求 * JVM发起GC时会忽略已标识为SafeRegion状态的线程 * 如果线程要离开Safe Region,需要检查系统是否已完成根节点枚举\(或GC过程\),如果已完成则线程继续执行,否则继续等待直到收到可以安全离开Safe Region的信号