【深入理解Java虚拟机】四、垃圾收集器(Serial、ParNew、Parallel Scavenge、CMS、Serial Old、Parallel Old、G1)

并行和并发

并行-Parallel

在这里插入图片描述
并行:多条垃圾收集线程并行工作,用户线程处于等待状态
如:ParNew、Parallel Scavenge、Parallel Old

并发 - Concurrent

在这里插入图片描述
并发:指用户线程与垃圾线程同时执行(但不一定是并行的,可能会交替执行)

吞吐量

吞吐量就是CPU 运行用户代码的时间CPU总消耗时间 的比值。

吞吐量 = 运行用户代码的时间 / (运行用户代码的时间+垃圾收集的时间)

假设虚拟机总共运行了100分钟,其中垃圾收集花了一分钟 吞吐量就是99%

在正式了解虚拟机之前,我们先看一下JVM包含的收集器(以HotSpot为例)
在这里插入图片描述
上图展示了7种作用于不同分代的收集器,如果两个收集器之间存在连接,就说明他们之间可以搭配使用,所处的区域,表示它是属于新生代收集器还是老年代收集器。

新生代收集器

1.1 Serial收集器

  Serial收集器是最基本、发展历史最悠久的收集器,在JDK1.3.1之前,是虚拟机新生代收集的唯一选择

1.1.1 特性

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

1.1.2 优势

Serial收集器是虚拟机运行在Client模式下的默认的新生代收集器
Client模式:之前的版本有参数-client,客户端程序可以加-client,但是JDK1.8之后被取消了
java开发桌面程序,虚拟机就分为Client模式和Server模式,Server模式没有必要加载可视化界面,所以就有之前的Client。
简单、高效(与其它收集器的单线程比),对于限定单个CPU的环境来说,Serial收集器由于没有线程交互的开销,专心做垃圾收集自然可以获得最高的单线程收集效率
在这里插入图片描述

1.2 ParNew收集器

  ParNew收集器其实就是Serial收集器的多线程版本,除了使用多条线程进行垃圾收集外,其余与Serial收集器完全一样。
ParNew收集器是许多运行在Server模式下的虚拟机中首选的新生代收集器

1.2.1 Serial和ParNew的对比分析

  与Serial收集器相比,ParNew在单CPU的环境下绝对不会有比Serial收集器更好的效

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值