我把以前写的关于弱引用实现java缓存的实例分享给大家,虽然简单但是能说明软引用实现缓存的原理,有助于学习软引用集合等.对于弱引用,软引用,虚引用的概念相信大家已经熟悉了,我们这里就不讲解了,直接上例子.
import java.lang.ref.SoftReference;
/**
软引用测试
*/
public class SoftReferenceDemo {
public static void main(String[] args) {
A a = new A();
//使用a
a.test();
//使用完了a,将它设置为soft引用类型,并且释放强引用
SoftReference sr = new SoftReference(a);
a = null;
//下次使用
if (sr != null) {
a = (A)sr.get();
a.test();
} else {
//GC由于低内存,已释放a,因此需要重新装载
a = new A();
a.test();
a = null;
sr = new SoftReference(a);
}
}
}
class A {
public void test() {
System.out.println("Soft Reference test");
}
}
小结:对于在内存中不经常使用,也就是偶尔调用一次的应用可以考虑使用软或则弱引用,以提高垃圾回收效率.
更多的技术帖子来自www.watchmen.cn
弱引用不适合作为缓存,一般窗体程序或者内部有一个按时循环的线程的程序中,弱引用通常会在很短的时间内被释放,一般保存时间在1秒以内。通常长时间保存弱引用的主要是单线程控制台程序。
实际上只有软引用可以作为缓存。