四种主要垃圾回收

  1. Serial(串行回收)
    一个线程,会暂停用户线程
  2. Parallel(并行回收 java8默认使用)
  • 多个垃圾收集线程并行工作,用户线程暂停
  • 前两者 都会 stop the world
  1. CMS(并发标记清除算法)用来收集老年代
  • 用户线程和垃圾收集器同时执行(不一定并行.可能交替)

     初始标记(gcroot检测)(会暂停)
     并发标记
     重新标记(再标记一次)
     并发清除(和用户线程一起)
     优点:极大减少了停顿时间
     缺点:耗费cpu,必须在老年代堆内存用完前进行回收,否则CMS回收失败时候会触发担保机制,使用串行垃圾收集器
    
  1. G1 (老年代和新生代都回收)
    将eden,survivor,和old区域变得不再连续,将他们打散
    避免了全内存扫描
    将堆内存的物理空间划分取消了,将堆划分成32个区域,
    JAVA12又增加了ZGC

猜你喜欢

转载自blog.csdn.net/qq_38393471/article/details/89408646
今日推荐