根据你讲述内容的前半部分,我相信你是很容易理解垃圾是怎么产生的。既然引用变量指向了堆内存中的实际对象,那么,你现在想想,如果我现在使引用变量Person p=null,会是什么结果呢?之前除了p之外,没有对象引用过这个对象。这下垃圾就有了。由于没有引用变量知道这个实际对象的地址,它就不受程序的控制了。JVM会定时搜索这些不再被引用的对象,释放它们的内容。当然,如果你要问我它搜索的算法是怎样的,就有点为难我了,这是纯数学问题,有兴趣可以自己深究。回收的原理我想就没有必要讲得太详细了,任何数据最终都会反映为0,1,恢复电气信号为最初状态就行了,即数据被擦除。 |