深入理解JAVA虚拟机系列之垃圾收集器Serial 和 Serial Old

一、简介

  • 本文主要介绍Serial 和 Serial Old 组合的垃圾收器的回收流程和GC日志,也提供了在线图形化页面参考;

二、回收原理

2.1 回收流程图

2.2 Serial收集器

  • 单线程工作的收集器,在其执行垃圾回收时必须暂停其它所有工作线程,直到它收集结束,会Stop The World;
  • HotSpot虚拟机运行在客户端模式下的默认新生代收集器,使用的是复制算法,简单高效;
  • 对于内存资源受限的环境,它是所有收集器里额外内存消耗最小的;
  • 对于单核处理器或处理器核心数较少的环境来说,Serial收集器由于没有线程交互的开销,专心做垃圾收集自然可以获得最高的单线程收集效率;
  • 在用户桌面的应用场景以及近年来流程的部分微服务应用中,分配给虚拟机管理的内存一般来说并不会特别大,收集几十兆甚至一俩百兆的新生代(仅仅是指新生代使用的内存,桌面应用甚少超过这个容量),垃圾收集的停顿时间完全可以控制在十几、几十毫秒,最多一百多毫秒以内,只要不是频繁发生收集,这点停顿时间堆许多用户来说是完全可以接受的,所以,Serial收集器对于运行在客户端模式下的虚拟机来说是个很好的选择;

2.3 Serial Old收集器

  • Serial Old是Serial收集器的老年代版本,同样是一个单线程收集器, 同样会导致STW;
  • HotSpot虚拟机运行在客户端模式下的默认老年代收集器,使用的是标记整理算法,简单高效;
  • 如果在服务端模式下,它也可能有俩种用途:一是在JDK5及之前的版本中与Parallel Scavenge收集器搭配使用;另外一种就是作为CMS收集器发生失败时的后备预案,在并行收集发生Concurrent Mode Failure时使用;

三、GC日志分析

四、图形化参考

posted @ 2021-01-23 23:21  请叫我猿叔叔  阅读(461)  评论(0)    收藏  举报