介绍
写过C++程序的小伙伴都知道,每次new出来的对象,都要在代码中手动回收,不然就会造成内存泄露(即内存一直占用,直到程序崩溃),而写Java就不用担心这个问题,只管申请,不用管释放。因为JVM会帮你释放清除那些不用的对象。那么JVM是怎么判断哪些对象不被使用了,可以被清除了
判断对象不被使用的算法
引用计数法
引用计数法(Reference Counting):给对象添加一个引用计数器,每当有一个地方引用它时,计数器值就加1,当引用失效时,计数器值就减1,任何时刻计数器为0的对象就是不可能被再使用的。
但这种方法算法很难解决对象之间相互循环引用的问题。举个例子
对象objA和objB都有字段instance,赋值令objA.instance=objB,以及objB.instance=objA,除此之外这2个对象再无任何引用,实际上这2个对象已经不可能再被访问,但是他们