下面是软引用的实现代码:
2 * 该类演示了Soft Reference的应用
3 * 版权 本文版权属Java天下
4 */
5package cn.javatx;
6
7import java.lang.ref.SoftReference;
8
9/** *//**
10 * @author ajie
11 */
12
13public class softReference {
14
15 /** *//**
16 * @param args
17 */
18 public static void main(String[] args) {
19 // TODO Auto-generated method stub
20 A a = new A();
21
22 //使用a
23 a.test();
24
25 //使用完了a,将它设置为soft引用类型,并且释放强引用
26 SoftReference sr = new SoftReference(a);
27 a = null;
28
29 //下次使用
30 if (sr != null) {
31 a = (A)sr.get();
32 a.test();
33 } else {
34 //GC由于低内存,已释放a,因此需要重新装载
35 a = new A();
36 a.test();
37 a = null;
38 sr = new SoftReference(a);
39 }
40 }
41
42}
43
44class A {
45 public void test() {
46 System.out.println("Soft Reference test");
47 }
48}
49
软引用技术的引进使Java应用可以更好的管理内存,稳定系统,防止系统内存溢出,避免系统崩溃。因此在处理一些占用内存大而且声明周期较长,但使用并不频繁的对象时应尽量应用该技术。但事物总带有两面性的,有利也有弊,在某些时候对软引用的使用会降低应用的运行效率与性能,例如:应用软引用的对象的初始化过程较为耗时,或者对象的状态在程序的运行过程中发生了变化,都会给重新创建对象与初始化对象带来不同程度的麻烦,有些时候我们要权衡利弊择时应用。
Java天下
http://www.