一、垃圾回收概述
1 什么是GC,为何要GC?
2 早期垃圾回收
3 Java的垃圾回收机制
二、垃圾回收的相关算法
1 垃圾回收算法的概述
??垃圾回收分为标记阶段和清除阶段,标记阶段找垃圾,清除阶段清掉找到的垃圾。
??标记阶段使用的算法有引用计数算法、可达性算法。
??清除阶段使用的算法有标记-清除算法、复制算法、标记-压缩算法、分代收集算法、增量收集算法、分区算法。
2 标记阶段 - 引用计数算法
3 标记阶段 - 可达性分析算法
4 对象的finalization机制
??有趣的代码——对象复活记
public class Test {
public static Test test;
@Override
protected void finalize() throws Throwable {
super.finalize();
System.out.println("finalizing...");
test = this;
}
public static void main(String[] args) throws InterruptedException {
test = new Test();
test = null;
System.gc();
Thread.sleep(500);
if (test != null) {
System.out.println("I am alive:)");
} else {
System.out.println("I am gg:(");
}
test = null;
System.gc();
if (test != null) {
System.out.println("I am alive:)");
} else {
System.out.println("I am gg:(");
}
}
}
|