jvm垃圾回收器之串行

135 阅读2分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第8天,点击查看活动详情

4.垃圾回收器

  • 并行收集:指多条垃圾收集线程并行工作,但此时用户线程仍处于等待状态。
  • 并发收集:指用户线程与垃圾收集线程同时工作(不一定是并行的可能会交替执行)。用户程序在继续运行, 而垃圾收集程序运行在另一个CPU上
  • 吞吐量:即CPU用于运行用户代码的时间与CPU总消耗时间的比值(吞吐量 = 运行用户代码时间 / ( 运行用户 代码时间 + 垃圾收集时间 )),也就是。例如:虚拟机共运行100分钟,垃圾收集器花掉1分钟,那么吞吐量 就是99%

(1)串行

  • 单线程

  • 内存较小,个人电脑(CPU核数较少)

    image-20220331153400159

    安全点

    让其他线程都在这个点停下来,以免垃圾回收时移动对象地址,使得其他线程找不到被移动的对象 因为是串行的,所以只有一个垃圾回收线程。且在该线程执行回收工作时,其他线程进入阻塞状态

    Serial 收集器

    Serial收集器是最基本的、发展历史最悠久的收集器

    特点:单线程、简单高效(与其他收集器的单线程相比),采用复制算法。对于限定单个CPU的环境来说, Serial收集器由于没有线程交互的开销,专心做垃圾收集自然可以获得最高的单线程手机效率。收集器进行垃 圾回收时,必须暂停其他所有的工作线程,直到它结束(Stop The World)

    ParNew 收集器

    ParNew收集器其实就是Serial收集器的多线程版本

    特点:多线程、ParNew收集器默认开启的收集线程数与CPU的数量相同,在CPU非常多的环境中,可以使 用-XX:ParallelGCThreads参数来限制垃圾收集的线程数。和Serial收集器一样存在Stop The World问题

    Serial Old 收集器

    Serial Old是Serial收集器的老年代版本

    特点:同样是单线程收集器,采用标记-整理算法