垃圾收集是java与c/c++的最大不同。有了jvm的自动垃圾收集机制,就可以让程序员专注于程序逻辑开发,

而不是花费大量的时间是考虑变量应该在什么时候去释放。

下面就来简单说一下java的垃圾收集相关的东西

首先要明白的一个问题是,jvm是如何判断一个对象已经变成了”垃圾“的呢?

两个方法:

1)引用记数法:

  为每个对象保存一个引用的数量,每增加一个引用这个值就加1,每减少一个引用就减1.如果这个记数变为

0了,就说明这个对象已经不再被使用了。那么jvm就认为这个对象是可以回收的了。

  但是这个方法有一个缺点,就是无法解决循环引用的问题。A引用B,B也引用A,如果A,B两个对象都不再

被使用了,那么这两个对象其实都是可以被回收的,但是他们的引用记数不为0.所以用这个办法就没有办法回收了。