下面是軟引用的實(shí)現(xiàn)代碼:
1
/** *//**
2
* 該類演示了Soft Reference的應(yīng)用
3
* 版權(quán) 本文版權(quán)屬Java天下
4
*/
5
package cn.javatx;
6
7
import java.lang.ref.SoftReference;
8
9
/** *//**
10
* @author ajie
11
*/
12
13
public 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,將它設(shè)置為soft引用類型,并且釋放強(qiáng)引用
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由于低內(nèi)存,已釋放a,因此需要重新裝載
35
a = new A();
36
a.test();
37
a = null;
38
sr = new SoftReference(a);
39
}
40
}
41
42
}
43
44
class A
{
45
public void test()
{
46
System.out.println("Soft Reference test");
47
}
48
}
49


2

3

4

5

6

7

8

9


10

11

12

13



14

15


16

17

18



19

20

21

22

23

24

25

26

27

28

29

30



31

32

33



34

35

36

37

38

39

40

41

42

43

44



45



46

47

48

49

軟引用技術(shù)的引進(jìn)使Java應(yīng)用可以更好的管理內(nèi)存,穩(wěn)定系統(tǒng),防止系統(tǒng)內(nèi)存溢出,避免系統(tǒng)崩潰。因此在處理一些占用內(nèi)存大而且聲明周期較長(zhǎng),但使用并不頻繁的對(duì)象時(shí)應(yīng)盡量應(yīng)用該技術(shù)。但事物總帶有兩面性的,有利也有弊,在某些時(shí)候?qū)浺玫氖褂脮?huì)降低應(yīng)用的運(yùn)行效率與性能,例如:應(yīng)用軟引用的對(duì)象的初始化過程較為耗時(shí),或者對(duì)象的狀態(tài)在程序的運(yùn)行過程中發(fā)生了變化,都會(huì)給重新創(chuàng)建對(duì)象與初始化對(duì)象帶來(lái)不同程度的麻煩,有些時(shí)候我們要權(quán)衡利弊擇時(shí)應(yīng)用。
Java天下
http://www.javatx.cn