我走过几个demo,
应该就是你的软引用为空之后,就会给GC清除出去的了。SoftReference sr=new SoftReference(Object o);
//我觉得如果你用到了一个软引用对象的话,
//为了保证你的程序没有问题,
//你就应该随时重新实例化你的对象
if(sr == null)
{
  //重新实例化你的对象
 sr = new SoftReference(new YourObject());
}
//下面再继续你的代码。

//做的好处应该是一些不变的占用内存很大的对象,
//可以随时让JVM自动清除一些内存出来,可以回快其它的程序的速度
//以及防止程序出现outofMemory.
//在要用时候,如果给GC了,可以随时可以再load出来。

解决方案 »

  1.   

    谢谢你的回复,
    我用的是类似的方法
    可是我在细节华测试sr==null的值的时候,发现并没有用,也就是说sr!=null的某些时候,sr.get()返回居然为null,让我百思不得其解
    而isEnQueue的返回值我一直没有具体搞清楚它是什么东西了
      

  2.   

    用 java -Xloggc:<file> 你的类
    来将GC的日志记到文件中查看.