GC-垃圾回收

一、what(概念)

garbage collection

二、where(作用的区域)

堆和方法区

(栈和PC随着线程的创建而产生,销毁而消失)

三、when(什么时候进行垃圾回收)

1、引用计数法(已弃用)

2、可达性分析

与GC ROOT之间有引用链(从GC ROOT向下搜索走过的路径成为引用链)

GC ROOT :静态变量、常量池、指针

四、how(怎么进行垃圾回收)

1、垃圾回收的方法

标记清除 标记存活对象,统一回收

标记复制 A|B两个区域、将A中的存活对象全部复制到B区,再统一回收A区

标记整理 将存活对象统一向一端移动,再回收端边界以外区域

2、垃圾回收器

串行 serial 、 serial old

并行 parNew、parallel scavenge、parallel old

并发 CMS

G1

ZGC

五、minor GC & full GC

minor GC 分配对象时,当伊甸园区空间不足,就会触发一次minor GC ,将伊甸园区的对象放入survivor区,此时对象初始年纪为1;之后每经过一次minor GC ,+1岁,一般当到达15岁,就会晋升到老年代。

full GC 1⃣️历次进入老年代的对象的平均大小大于老年代的剩余空间

2⃣️老年代空间不足,无法分配一个大对象

相关推荐
香蕉大香蕉(06敬畏市场)19 小时前
高频八股 · Java 并发编程(10):异步、ThreadLocal 与虚拟线程(收官)
java·开发语言·网络·jvm·python·ai·实习
wuminyu20 小时前
JVM规范学习总结-Class文件结构
java·linux·c语言·jvm·c++
酌沧1 天前
MemT让记忆成为模型内生能力
jvm·人工智能·算法
wuminyu2 天前
JVM规范学习总结-Java源码经过javac编译后产物
java·linux·c语言·jvm·c++
学到老活到老3 天前
类已经加载了,为什么静态代码还没执行?
java·jvm
学到老活到老3 天前
写了 new,就一定会在堆上分配对象吗?
java·jvm
笨笨饿3 天前
# 59_CSDN博客自动写流程文章
linux·jvm·stm32·单片机·嵌入式硬件·mcu·51单片机
tedcloud1233 天前
Docker Compose 部署 Memos:从安装到备份恢复
linux·开发语言·jvm·后端·docker·容器·rust
螺蛳粉 螺蛳粉3 天前
大数据第四篇:事故复盘:移走 HBase 里 27 个 hadoop-2.10.2 jar 后,HMaster 半小时后“自杀“了【jar 事故复盘】
jvm·hadoop·hbase·异常处理·大数据运维·踩坑记录·事故复盘
wuminyu3 天前
JVM规范学习总结-JVM规范基本概念
java·linux·c语言·jvm·c++