垃圾收集器

来源:互联网 发布:js获取class名称 编辑:程序博客网 时间:2024/06/05 19:59

注:本文为阅读《深入理解Java虚拟机 JVM高级特性与最佳实战》第2版(周志明)一书后的学习笔记,文中的图片来源于原书, 特此说明。

收集算法是内存回收的方法论,那么垃圾收集器就是内存回收的具体实现。
这里写图片描述


1、Serial收集器

这个收集器是一个单线程的收集器,但它的“单线程”的意义并不仅仅说明它只会使用一个CPU或一条收集线程去完成垃圾收集工作,更重要的是在它进行垃圾收集时,必须暂停其他所有的工作线程,直到它收集结束。

特点:

  • 但实际上到现在为止,它依然是虚拟机运行在Client模式下的默认新生代收集器;
  • 简单而高效(与其他收集器的单线程比),对于限定单个CPU的环境来说,Serial收集器由于没有线程交互的开销,专心做垃圾收集自然可以获得最高的单线程收集效率。

2、Serial Old收集器

Serial Old是Serial收集器的老年代版本,它同样是一个单线程收集器,使用“标记-整理”算法。

这里写图片描述

特点:

  • 该收集器的一种用途就是作为CMS收集器的后备预案,在并发收集发生ConcurrentMode Failure时使用

3、ParNew收集器

ParNew收集器其实就是Serial收集器的多线程版本,除了使用多条线程进行垃圾收集之外,其余行为包括Serial收集器可用的所有控制参数、收集算法、Stop The World、对象分配规则、回收策略等都与Serial收集器完全一样,在实现上,这两种收集器也共用了相当多的代码。

这里写图片描述

4、Parallel Scavenge收集器

。。。未完

0 0
原创粉丝点击