本帖最后由 scyn 于 2009-09-14 16:38:37 编辑

解决方案 »

  1.   

    System.gc(); 不能保证垃圾回收一定会执行
      

  2.   

    Object obj = ref.get();
    if(obj!=null){
       ....
    }
      

  3.   

    小弟初学,我参考了一下
    http://www.ibm.com/developerworks/cn/java/j-refs/index.html如果弱引用引用的对象所占用的内存被释放(对象被回收)后,那么弱引用的对象才会添加到关联的引用队列中
    java2000_net (老紫竹)
    您的意思是不是说:
    我这种情况如果只显示一个弱引用,说明只有一个对象的内存被释放了,另一个还没有释放? 
    如果全都释放了,是不是队列中就有两个对象了?还有一个问题就是Reference ref = rq.poll(); 
    是不是一次只能返回一个对象引用?能查看引用队列的全部内容吗?谢谢!
      

  4.   

    刚才又学习并测试了一下,好像是这样取的:
    .....
    System.gc();Reference ref = null;while((ref = rq.poll())!=null)
    {
       System.out.println(ref);
    }这样就可以看到引用队列中的引用对象了。