如果你还不了解JVM的基本概念和内存划分,请阅读JVM学习笔记-基础知识和JVM学习笔记-内存处理文章。
因为Java中没有留给开发者直接与内存打交道的指针(C++指针),所以如何回收不再使用的对象问题,就丢给了JVM。所以接下来就介绍一下目前主流的垃圾收集器所采用的算法。不过在此之前,有必要先了解Reference
1.引用(Reference)
如果你现在还是JDK1.0或者1.1版本的开发者?可以跳过以下部分内容;如果不是的话,下面这些内容还是有参考价值的。你可能会问,Reference还有什么可讲的?还是有一点,你知道Reference有四中分类吗?这可不是孔乙己的四种“回”字写法可以类比的。讲到引用(Reference),我们最先想到的一般是:
Object obj = new Object();
这种属于Strong Reference(JDK1.2之后引入),这类Reference的特点就是,只要Reference还在,目标对象就不能被干掉。我们可以想一下为什么要干掉一些对象?很简单,因为内存不够了。如果内存狗使用,大家都或者就好了。所以当内存不都时,会先干掉一些“必死无疑的家伙”(下面会解释)