课件资料
链接: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, 3
System.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 线程间可见,禁止指令重排序