文章目录
- 上一篇
- Java 自动内存管理介绍
- 垃圾回收相关算法概述
- 引用计数算法的原理以及优缺点
- 可达性分析算法与GC roots
- 对象的finailzation 机制
- 使用 MAT 查看 GC Roots
- 标记清除算法的原理和优缺点
- 复制算法原理及优缺点
- 标记--压缩算法原理及优缺点
- 不同指标上对比三种用法
- 分代收集算法说明
- 增量收集算法原理及优缺点
- 分区算法的说明
- 垃圾回收相关概念的概述
- System.gc() 的理解
- 内存溢出与内存泄漏
- 内存泄漏分析
- Stop The Word(STW)事件的理解
- 程序的并行与并发
- 垃圾回收的并行与并发
- 安全点与安全区域
- Java 中几种不同引用的概述
- 强引用:不回收
- 软引用--内存不足即回收
- 弱引用 -- 发现即回收
- 虚引用--对象回收跟踪
- 终结器引用的介绍
- 垃圾回收章节概述
- 垃圾回收器的分类
- GC 性能指标的整体说明
- 吞吐量与暂停时间的对比说明
- 垃圾回收器的发展迭代史
- 垃圾回收器的组合关系
- 如何查看默认的垃圾收集器
- Serial 与 Serial Old 垃圾回收器介绍
- ParNew 回收器:并行回收
- Parallel 与 Parallel Old 垃圾回收器介绍
- Parallel 相关参数设置
- CMS垃圾回收器概述与工作原理
- 认识 G1 垃圾回收器
- G1 回收器的优势和不足
- G1 参数设置
- region 的使用介绍
- G1 垃圾回收器的主要环节
- 记忆集与写屏障
- G1 垃圾回收过程的详细说明
- G1 垃圾回收的优化建议
- 7种经典的回收器总结与调优建议
- 常用的显示 GC 日志的参数
- GC 日志中垃圾回收数据分析
- G1 和 ZGC 垃圾回收器剖析
- JVM 性能调优
上一篇
上一篇:https://blog.youkuaiyun.com/weixin_43896363/article/details/106231392
Java 自动内存管理介绍
垃圾回收相关算法概述
- 可达性分析算法是Java 中真正使用的标记算法
引用计数算法的原理以及优缺点
- 因为 JVM 规范并没有规定方法区的 GC ,而且方法区基本不进行垃圾回收,所以 GC 主要针对 堆
可达性分析算法与GC roots
对象的finailzation 机制
- 我滴小问题:至少两次标记吗?和 F-Queue 队列里面的对象保持连接的是属于可触及的还是不可触及的呢?
使用 MAT 查看 GC Roots
- 一个程序有多少个 GC Roots,分别又是什么呢,我们可以通过工具里查看—MAT 和 JProfiler
标记清除算法的原理和优缺点
- 标记-清除,标记的不是垃圾,而是非垃圾的对象(或者说可达对象)
复制算法原理及优缺点
上图特别的:
复制算法在垃圾对象越多,效率越好,因为需要复制的就少
- 复制算法用指针碰撞分配内存
- 标记-清除用空闲列表的方式分配内存
- 复制算法要维护栈中的引用,因为对象移动了,引用也得变
- 所以前面讲的堆的新生区 GC 用的算法就是复制算法,因为新生区的对象朝生夕死,垃圾很多,存活的对象少,用复制算法效率很不错
标记–压缩算法原理及优缺点
不同指标上对比三种用法
分代收集算法说明
增量收集算法原理及优缺点
分区算法的说明
- 主要还是针对G1回收器来说的
垃圾回收相关概念的概述
System.gc() 的理解
- System.gc() 仅仅是提醒希望虚拟机进行一次垃圾回收,但是虚拟机执行与否与System.gc() 无关
- 与Runtime.getRuntime.gc() 的作用一样System.gc() 的底层就是他来实现的)
- System.runFinalization() 方法就会确保虚拟机一定要进行垃圾回收(强制调用失去引用的对象的 finallize 方法)
内存溢出与内存泄漏
内存泄漏分析
- 宽泛意义上的内存泄漏:比如本该设置成局部变量的,你设置成静态变量,生命的周期就长了
Stop The Word(STW)事件的理解
程序的并行与并发
垃圾回收的并行与并发
安全点与安全区域
Java 中几种不同引用的概述
强引用:不回收
软引用–内存不足即回收
- 在第二行代码执行完之后既有强引用,也有软引用,obj=null 之后就只剩下软引用
- 不一定是报 OOM 异常的时候回收,内存感到紧张的时候可能就回收了
弱引用 – 发现即回收
虚引用–对象回收跟踪
终结器引用的介绍
垃圾回收章节概述
垃圾回收器的分类
GC 性能指标的整体说明
- 吞吐量和暂停时间也是后面 JVM 调优重点关注的指标
吞吐量与暂停时间的对比说明
垃圾回收器的发展迭代史
- 不同的垃圾收集器和具体的JVM是相关联的,不同的厂商,会提供不同版本的JVM,不同版本的JVM 就可以使用不同版本的垃圾回收器
垃圾回收器的组合关系
- CMS 和 MSC 相连,是因为 CMS 是并发的,把 MSC 作为一种后备方案
- 红色的线是 jdk 8 以前的,青色的是 jdk 14 之前的
- Parallel Scavenge 和其他的垃圾回收器用的框架不一样,所以有的没有连线,因为不能兼容
如何查看默认的垃圾收集器
- JDK9 中 G1 变成默认垃圾收集器
Serial 与 Serial Old 垃圾回收器介绍
ParNew 回收器:并行回收
Parallel 与 Parallel Old 垃圾回收器介绍
Parallel 相关参数设置
CMS垃圾回收器概述与工作原理
认识 G1 垃圾回收器
G1 回收器的优势和不足
G1 参数设置
region 的使用介绍
G1 垃圾回收器的主要环节
记忆集与写屏障
- 记忆集记忆了哪些引用指向他,比如,reset2 记录了 Regin1 和 Regin2 指向他
G1 垃圾回收过程的详细说明
G1 垃圾回收的优化建议
7种经典的回收器总结与调优建议
常用的显示 GC 日志的参数
GC 日志中垃圾回收数据分析
G1 和 ZGC 垃圾回收器剖析
Java8 的默认垃圾收集器:Parallel Scavenge + Parallel Old
JVM 性能调优
何为调优?
1、根据项目需求进行 JVM 规划和预调优:比如选择多大的服务器
2、优化运行程序中导致的卡顿问题:比如频繁发生 Full GC,可以适当把新生代调大一点
3、解决 JVM 运行过程中出现的各种问题(内存溢出等等)