我走过几个demo,
应该就是你的软引用为空之后,就会给GC清除出去的了。SoftReference sr=new SoftReference(Object o);
//我觉得如果你用到了一个软引用对象的话,
//为了保证你的程序没有问题,
//你就应该随时重新实例化你的对象
if(sr == null)
{
//重新实例化你的对象
sr = new SoftReference(new YourObject());
}
//下面再继续你的代码。
//做的好处应该是一些不变的占用内存很大的对象,
//可以随时让JVM自动清除一些内存出来,可以回快其它的程序的速度
//以及防止程序出现outofMemory.
//在要用时候,如果给GC了,可以随时可以再load出来。
应该就是你的软引用为空之后,就会给GC清除出去的了。SoftReference sr=new SoftReference(Object o);
//我觉得如果你用到了一个软引用对象的话,
//为了保证你的程序没有问题,
//你就应该随时重新实例化你的对象
if(sr == null)
{
//重新实例化你的对象
sr = new SoftReference(new YourObject());
}
//下面再继续你的代码。
//做的好处应该是一些不变的占用内存很大的对象,
//可以随时让JVM自动清除一些内存出来,可以回快其它的程序的速度
//以及防止程序出现outofMemory.
//在要用时候,如果给GC了,可以随时可以再load出来。
我用的是类似的方法
可是我在细节华测试sr==null的值的时候,发现并没有用,也就是说sr!=null的某些时候,sr.get()返回居然为null,让我百思不得其解
而isEnQueue的返回值我一直没有具体搞清楚它是什么东西了
来将GC的日志记到文件中查看.