#1.Java是怎么判断一个对象没有被引用的?
答:大多数垃圾回收使用了根集的概念,所谓根集就是正在执行的java程序可以访问的引用变量集合,程序可以使用引用变量访问对象的属性和调用对象的方法,垃圾回收首先需要确定从根开始哪些是可以到达哪些是不可一到达的,从根集可达的对象都是活动对象,它不能被垃圾回收,这里也包括从根集间接可达的对象,而根集通过任意路径不可达的对象则符合被垃圾回收的条件。垃圾回收的算法有很多,除了使用了这里根集的概念的算法以外,一些算法使用了引用计数法,所谓的引用计数法就是给每一个堆中的对象都有一个与之对应的引用计数器,引用计数器记录了对应对象被引用的次数,当这个次数为0的时候就标志着对应的这个对象满足了垃圾回收的条件。
相关博文: http://blog.csdn.net/zsuguangh/article/details/6429592
#2