课件资料
链接:https://pan.baidu.com/s/1pghXO4-Dx7QebUAXD258aA
提取码:ao05
Class初始化过程

public class T{public static int count = 2;public static T t = new T();public T(){count++;}}public class T_1 {public static T_1 t = new T_1();public static int count = 2;public T_1(){count++;}}public class ClassLoad {// 按顺序准备属性默认值public static void main(String[] args) {System.out.println(T.count); // 0, 2, 3System.out.println(T_1.count); // 0, 1, 2}}
预备知识
对象内存划分

新生代
Eden :新new的对象
Survivor:Eden对象回收后把剩余的复制到S1,下次回收S1,将S1剩余的复制到S2,回收S2,剩余复制到S1…老年代
Tenured:超过单个region的50%的大对象,S1、S2反复不回收达到指定次数
G1垃圾回收
- what
- 内存分区(Region)管理,内存区域不固定是年轻代或老年代
- 新老年代比例:5%-60%,一般不用手工指定
- why

- when
GC何时触发
- YGC
- FGC
MixedGC
- MixedGC回收步骤
穿插知识点
单例模式
Volatile 线程间可见,禁止指令重排序


