java在gc的时候回stop-the-world,这是因为什么呢?我想到的是为了数据的一致性,还有其他的原因么?javajvmgc

解决方案 »

  1.   

    CMS是个并发收集器,允许在回收垃圾的时候同时应用也继续运行,但中间也存在个别阶段需要stop the world
      

  2.   

    那为什么要stop呢?除了为了保持数据的一致性还有其他的原因么?
      

  3.   

    jvm垃圾回收是一个守护线程,优先级低,不能和其他非守护线程抢占cpu时间片,所以在非守护线程空闲时jvm才会执行垃圾回收
    所以应该不是jvm要执行垃圾回收而去stop the world 
      

  4.   

    我可以理解为gc的线程优先级低,所以要想gc的话必须要先把线程挂起?