Ⅳ.GC

1.GC简介

GC,又称YGC,只针对新生代的GC;
FGC,GC后不满足对象存储会发生FGC,针对新生代,养老代,元空间的GC;
FGC后依然不满足对象存储会发生OOM。
-XX:+PrintGCDetails 输出GC日志


Ⅳ.GC
GC日志

2.GC详述

GC即分代收集算法,包括
次数上频繁收集的新生代,
次数上较少收集的养老代,
基本不动的元空间。


Ⅳ.GC

Ⅳ.GC
GC与FGC

3.GC判断

3.1 引用计数法
Ⅳ.GC
3.2 可达性分析

4.GC算法

4.1 复制算法

发生在YGC中


Ⅳ.GC

优点:复制算法的核心优势是不会产生碎片,保证eden和from区会有大块可用空间;
缺点:产生一定空间的浪费。


Ⅳ.GC
优缺点
4.2 标记清除

发生在FGC中


Ⅳ.GC

优点:不需要额外的空间;
缺点:两次扫描更耗时,产生内存碎片。


Ⅳ.GC
优缺点
4.3 标记压缩

发生在FGC中,由标记清除+标记整理实现。
优点:没碎片,无额外空间。
缺点:浪费时间


Ⅳ.GC
4.4 综合比较
Ⅳ.GC
算法比较

Ⅳ.GC
分代收集算法

5.其他

4.1 System.gc();

手动GC(相较于系统的自动GC),是否开启GC取决于GC线程是否已经准备就绪,正常编程禁止使用手动GC。
一个运行的空类包括main和GC两个线程。