Java垃圾回收器详解

本文详细介绍了Java中的四种垃圾回收器:串行、吞吐量优先、响应时间优先(CMS)和G1垃圾回收器。每种回收器的特点、相关VM参数及工作流程被逐一阐述。JDK8默认使用吞吐量优先,JDK9开始采用G1,G1旨在平衡吞吐量和响应时间,具有超大堆和Region划分等特点。
摘要由CSDN通过智能技术生成

垃圾回收器


类型

本文涉及的垃圾回收器主要有以下的四种:

  1. 串行垃圾回收器
  2. 吞吐量优先的垃圾回收器
  3. 响应时间优先的垃圾回收器
  4. G1垃圾回收器

JDK8默认使用的是吞吐量优先的垃圾回收器,JDK9默认使用的是G1垃圾回收器



串行垃圾回收器


特点
  1. 单线程(仅仅指垃圾回收线程,用户线程可以是多个的)
  2. 堆内存较少,适合个人电脑

相关的VM参数

-XX:+UseSerialGC 开启串行垃圾回收器


工作流程

串行垃圾回收器的工作分为了两个部分,分别称为Serial和SerialOld。
Serial工作于新生代,采用了复制算法。
SerialOld工作在老年代,采用了标记整理算法。

回收流程: 每一个cpu分别在执行各自的线程,当收到垃圾回收的指令时,所有cpu会停在一个安全点(也就是所有cpu的活动栈帧都释放的时候),然后调度其中一个线程执行垃圾回收,其他线程处于阻塞状态(这种行为被称作Stop The World)。垃圾回收后继续执行各自的线程。

工作流程图如下:
在这里插入图片描述



吞吐量优先的垃圾回收器


吞吐量的概念

垃圾回收总时间占程序运行时间的比例。
(垃圾回收时间占比越低,吞吐量越高)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值