61.垃圾回收的并行与并发、安全点与安全区域

 

1.并行与并发

  1. 并行
    在这里插入图片描述
  2. 并发
    在这里插入图片描述
  3. 对比
    在这里插入图片描述

2.垃圾回收的并行与并发

  1. 垃圾回收并行:指的是多条垃圾收集线程并行工作,但此时用户线程处于等待状态。
    在这里插入图片描述
  2. 垃圾回收并发:用户线程和垃圾回收线程同时执行,但不一定是并行的,可能会交替执行,垃圾回收线程在执行是不会停顿用户程序的执行。
    在这里插入图片描述

3.安全点与安全区域

    1. 安全点
      程序执行时并非所有的地方都能够停下来开始GC,只有特定位置才能够停下来,这个位置称为安全点。
      选择安全点的时候,应该选择一些执行时间较长的指令作为安全点。如果选择作为安全点的指令,执行时间本来就很短,再被选择为安全点之后,执行时间变长了,就不好。
      在这里插入图片描述
    2. 如何在GC发生时,检查所有线程都跑到最近的安全点停顿下来?
      在这里插入图片描述
    3. 安全区域
      安全区域是只在一段代码中,对象的引用关系不发生变化,在这个区域内的任何位置开始GC都是可以的。
      在这里插入图片描述
      如果线程运行到安全区域,首先会标识已经进入安全区域,如果这段时间内发生GC,JVM就会忽略标识为安全区域状态的线程。
      当线程即将离开安全区域时,会检查JVM是否已经完成了GC,如果完成了,则继续运行,否则线程必须等待直到收到可以安全离开安全区域的信号为止。
      在这里插入图片描述
posted @ 2020-11-18 23:41  跃小云  阅读(77)  评论(0编辑  收藏  举报