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的信号

results matching ""

    No results matching ""