前言
《JVM垃圾回收思维导图》 系列专题:
- 整理了JVM垃圾回收的基本思想与实现方式
- Java版本为JDK11
- 参考书籍为《深入理解Java虚拟机》2020年第三版
系列分为如下几块:
《JVM垃圾回收思维导图:一. 基本思想》
《JVM垃圾回收思维导图:二. 理论算法》
《JVM垃圾回收思维导图:三. HotSpot垃圾回收算法与实现》
基础知识回顾
之前我们学习了JVM虚拟机的内存区域,可以知道JVM内部分为几块内存区域,每块内存区域有自己的用处。
具体知识可见:《JVM虚拟机内存区域》
一. JVM垃圾回收基本思想
JVM的内存区域在Java程序运行时,一直发生变化,与CPU等硬件进行着频繁的数据交换与计算。
- 随着Java程序的运行,这些内存区域可能会出现一些不再有用的内存空间;
- 内存资源是宝贵的,虚拟机需要释放掉这些无用的内存空间,回收资源,好保证Java程序长久稳定的运行。
- 准确的辨别哪些区域是没用的内存区域
- 尽快的回收,回收尽可能的不影响Java服务程序
- 回收后的资源再利用
二、可以回收的内存空间------垃圾回收的对象+对象“死亡”判定
三、JVM的引用类型-------标记算法中的回收强度
在JVM中,每个对象不是简单的“引用Y/没有引用N”非此即彼的两种情况,而是细分了以下四种,每种类型都有自己的回收策略: