JVM垃圾回收
一.简介 最近又复习下jvm相关内容,理解下思想,吸收下前辈经验,本文jdk 1.7/1.8 二.引用计数法与可达性分析 垃圾回收,便是将已经分配出去的的,但却不再使用的内存回收回来,以便能够再次分配。在Java虚拟机的语境下,垃圾指的是死亡对象所占据的堆空间。这里便涉及了一个关键问题:如何辨别一个对象死亡。 2.1 引用计数法 给个对象添加引用计数器,每当有一个地方引用它,计数器值就加1;当引用失效时,计数器值就减一;任何时刻计数器为0的对象就是不再被使用。 引用计数法有个重大的漏洞,无法处理循环引用的对象。 public class ReferenceCountingGC { public Object instance = null; private static final int _1MB = 1024*1024; //占内存 private byte[] bigSize = new byte[2 *_1MB]; public static void testGC(){ ReferenceCountingGC objA = new ReferenceCountingGC(); ReferenceCountingGC objB = new ReferenceCountingGC(); objA.instance = objB; objB.instance = objA;