java学习笔记-垃圾回收-垃圾回收器

目录

GC分类和性能指标

分类

性能指标

不同的垃圾回收器概述

发展历史

7款经典的垃圾收集器

垃圾收集器的组合关系

Serial回收器:串行回收

ParNew回收器:并行回收

Parallel Scavenge回收器:吞吐量优先(java8默认的垃圾收集器)

CMS回收器:低延迟

介绍

工作原理

CMS的特点与弊端

 参数设置

小结

G1回收器:区域化分代式

区域分代化

特点

缺点

参数设置

常见操作步骤

适用场景

分区Region:化整为零

垃圾回收过程概述

回收过程一:年轻代GC

回收过程二:并发标记过程

回收过程三:混合回收

回收可选的过程四:Full GC

垃圾回收器总结

GC日志分析

参数

Minor GC日志打印出来的信息详解

Full GC日志打印出来的信息详解


GC分类和性能指标

分类

  • 这里并行指的是多个垃圾回收器线程并行执行,并不是用户和垃圾回收器并行执行,垃圾回收器类似操作系统那个io阻塞,执行的时候用户线程是要暂停的,并行垃圾回收器就是暂停时间短一点

  • 这里的并发指的就是能和用户线程交替执行

 

性能指标

  • 下面标红的才是我们重点要去理解的,即吞吐量、暂停时间、内存占用

  •  吞吐量优先和暂停时间优先的对比

  • 现在的设计标注就是折中的 

 

不同的垃圾回收器概述

发展历史

7款经典的垃圾收集器

垃圾收集器的组合关系

  • 右图命令是查看当前jdk版本使用默认垃圾收集器 

 

Serial回收器:串行回收

ParNew回收器:并行回收

  • 并行指的是可以有多个垃圾回收器线程同时运行回收,这样暂停时间就会短一点,用户线程同样要暂停

Parallel Scavenge回收器:吞吐量优先(java8默认的垃圾收集器)

  • 可控制的吞吐量,可以自己调节参数来控制以及一个自适应策略

  • 参数配置

CMS回收器:低延迟

介绍

工作原理

  • 初始标记阶段仅仅是标记能被GC Roots直接关联到的对象,还没递归遍历下去
  • 并发标记阶段就是递归遍历下去标记
  • 重新标记阶段是为了修正因用户程序运作导致标记产生变动的那一部分对象标记记录。注意:重新标记只是对并发标记阶段标记的对象进行一个确认,确认是不是垃圾,如果并发标记阶段用户线程产生的新垃圾,重新标记阶段是无法标记这些的,重新标记只是对并发标记阶段标记的对象做确认!!这个非常重要!!!
  • 并发清除阶段就是清除垃圾的过程了

CMS的特点与弊端

  • 特点就是低延迟,没啥好说的,可以与用户线程并发执行
  • 还有一个就是CMS运行期间预留的内存不够程序使用,就会出现Concurrent Mode Failure,这时候只能用备用方案,使用Serial Old在老年代回收一下,因为Serial Old是单线程的,这样停顿时间就很长了

  • 缺点也比较明显,采用的是标记-清除算法,清除的时候内存是不连续的,也就是内存碎片化, 下次分配内存极为麻烦,还得额外维护一个空闲列表

  • 不换成标记-压缩算法也是有原因的,因为这个与用户线程并发执行,如果用标记-压缩,清除完还对内存进行整理,改变了对象的地址,那对正在运行的用户线程来说是非常崩溃的,每次都需要更改指针引用,得不偿失;也得出一个结论,内存整理是无法并发执行的,这样太过崩溃。

  • 内存碎片是非常严重的,如果此时有许多访问量要创建对象,因为内存不连续的问题(空闲列表并不能像指针碰撞一样,自由划分空间,内存不连续,导致空闲列表每块区域都是固定的),分配大对象极容易触发Full GC,Full GC就得STW,在web项目使用CMS出现这种情况,用户直接卡半天。所以这是一个很严重的问题
  • 对cpu资源敏感就不用多说了,就是与用户线程抢占资源呗
  • 浮动垃圾指的就是并发标记阶段用户线程产生的垃圾,这些垃圾CMS是处理不了的,可能再导致Full GC产生!

 参数设置

小结

G1回收器:区域化分代式

区域分代化

特点

缺点

参数设置

常见操作步骤

适用场景

分区Region:化整为零

垃圾回收过程概述

回收过程一:年轻代GC

回收过程二:并发标记过程

回收过程三:混合回收

回收可选的过程四:Full GC

垃圾回收器总结

GC日志分析

参数

Minor GC日志打印出来的信息详解

  • PSYoungGen指的就是Parallel Scavenge垃圾回收器(JDK8默认的年轻代就是这个垃圾回收器)

Full GC日志打印出来的信息详解

  • PSOldGen指的就是Parallel Old垃圾回收器(JDK8默认的老年代就是这个垃圾回收器)

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值