JVM学习笔记GC——JAVA预言的垃圾回收
Posted 嘉然今天吃甚么
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JVM学习笔记GC——JAVA预言的垃圾回收相关的知识,希望对你有一定的参考价值。
一、垃圾回收概述
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:(");
5 清除阶段:标记 - 清除算法
6 清除阶段:复制算法
我们很容易想到,幸存者区便使用的是复制算法。因为新生代死亡率高,导致复制算法的缺点不明显,而优势倍增。
7 清除阶段:标记 - 压缩算法
8 对比清除阶段三种算法
以上是关于JVM学习笔记GC——JAVA预言的垃圾回收的主要内容,如果未能解决你的问题,请参考以下文章