ajie
Java天下社區(qū) http://www.javatx.cn 歡迎大家上來交流Java技術(shù)
posts - 4, comments - 8, trackbacks - 0, articles - 0
BlogJava
::
首頁
::
新隨筆
::
聯(lián)系
::
聚合
::
管理
日歷
<
2007年6月
>
日
一
二
三
四
五
六
27
28
29
30
31
1
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
1
2
3
4
5
6
7
公告
Java天下社區(qū) http://www.javatx.cn 歡迎大家上來交流Java技術(shù)
常用鏈接
我的隨筆
我的評論
我的參與
最新評論
留言簿
(1)
給我留言
查看公開留言
查看私人留言
隨筆檔案
2006年1月 (1)
2005年12月 (3)
搜索
最新評論
1.?re: Java內(nèi)存管理之軟引用(Soft Reference)
軟引用應(yīng)該用在頻繁使用的對象上吧,緩存不就是為了頻繁使用嗎?最后的總結(jié)是不是有點(diǎn)問題?
--geeksnail
2.?re: Java內(nèi)存管理之軟引用(Soft Reference)
贊同,這個例子感覺不好。。。。@史壽偉
--DLevin
3.?re: Java內(nèi)存管理之軟引用(Soft Reference)
@史壽偉
的確不需要再去判斷了。
--Rosen
4.?re: 利用Java Mail API 開發(fā)郵件通知服務(wù)
評論內(nèi)容較長,點(diǎn)擊標(biāo)題查看
--淡然一笑
5.?re: Java內(nèi)存管理之軟引用(Soft Reference)
感覺有問題..
--1111
閱讀排行榜
1.?Java內(nèi)存管理之軟引用(Soft Reference) (10997)
2.?Filter Servlet實(shí)例應(yīng)用(5057)
3.?利用Java Mail API 開發(fā)郵件通知服務(wù) (2707)
4.?Excel文檔生成解決方案 (JAVA Servlet)(1499)
評論排行榜
1.?Java內(nèi)存管理之軟引用(Soft Reference) (6)
2.?利用Java Mail API 開發(fā)郵件通知服務(wù) (2)
3.?Filter Servlet實(shí)例應(yīng)用(0)
4.?Excel文檔生成解決方案 (JAVA Servlet)(0)
Java內(nèi)存管理之軟引用(Soft Reference)
Posted on 2005-12-18 00:29
ajie
閱讀(10997)
評論(6)
編輯
收藏
軟引用(Soft Reference)的主要特點(diǎn)是具有較強(qiáng)的引用功能。只有當(dāng)內(nèi)存不夠的時候才回收這類內(nèi)存,因此在內(nèi)存足夠的時候,他們通常不被回收。另外,這些引用對象還能保證在Java 拋出OutOfMemory異常之前,被設(shè)置為null。他可以用于實(shí)現(xiàn)一些常用資源的緩存,實(shí)現(xiàn)Cache的功能,保證最大限度的使用內(nèi)存而不引起OutOfMemory異常。
下面是軟引用的實(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
軟引用技術(shù)的引進(jìn)使Java應(yīng)用可以更好的管理內(nèi)存,穩(wěn)定系統(tǒng),防止系統(tǒng)內(nèi)存溢出,避免系統(tǒng)崩潰。因此在處理一些占用內(nèi)存大而且聲明周期較長,但使用并不頻繁的對象時應(yīng)盡量應(yīng)用該技術(shù)。但事物總帶有兩面性的,有利也有弊,在某些時候?qū)浺玫氖褂脮档蛻?yīng)用的運(yùn)行效率與性能,例如:應(yīng)用軟引用的對象的初始化過程較為耗時,或者對象的狀態(tài)在程序的運(yùn)行過程中發(fā)生了變化,都會給重新創(chuàng)建對象與初始化對象帶來不同程度的麻煩,有些時候我們要權(quán)衡利弊擇時應(yīng)用。
Java天下
http://www.javatx.cn
評論
#
re: Java內(nèi)存管理之軟引用(Soft Reference)
回復(fù)
更多評論
2007-06-18 16:22 by
史壽偉
使用 if (sr != null) { 來判斷軟引用的對象是否可用是不對的。
sr 始終是不為空的,可能為空的是 sf.get() 而不是 sf 本身。
#
re: Java內(nèi)存管理之軟引用(Soft Reference)
回復(fù)
更多評論
2007-11-01 10:43 by
snoopy
@史壽偉
ding
#
re: Java內(nèi)存管理之軟引用(Soft Reference)
回復(fù)
更多評論
2008-12-19 13:48 by
1111
感覺有問題..
#
re: Java內(nèi)存管理之軟引用(Soft Reference)
回復(fù)
更多評論
2010-06-11 16:47 by
Rosen
@史壽偉
的確不需要再去判斷了。
#
re: Java內(nèi)存管理之軟引用(Soft Reference)
回復(fù)
更多評論
2011-11-02 17:02 by
DLevin
贊同,這個例子感覺不好。。。。@史壽偉
#
re: Java內(nèi)存管理之軟引用(Soft Reference)
回復(fù)
更多評論
2012-12-31 17:39 by
geeksnail
軟引用應(yīng)該用在頻繁使用的對象上吧,緩存不就是為了頻繁使用嗎?最后的總結(jié)是不是有點(diǎn)問題?
新用戶注冊
刷新評論列表
只有注冊用戶
登錄
后才能發(fā)表評論。
網(wǎng)站導(dǎo)航:
博客園
IT新聞
Chat2DB
C++博客
博問
管理
Powered by:
BlogJava
Copyright © ajie
主站蜘蛛池模板:
耿马
|
武川县
|
饶阳县
|
兰考县
|
大安市
|
呈贡县
|
当涂县
|
谷城县
|
揭东县
|
和政县
|
陵川县
|
土默特右旗
|
城市
|
新余市
|
上饶县
|
博爱县
|
盈江县
|
四川省
|
始兴县
|
兴宁市
|
安丘市
|
扎赉特旗
|
文安县
|
紫阳县
|
宁明县
|
东辽县
|
乌鲁木齐县
|
清水河县
|
荥经县
|
商河县
|
伽师县
|
婺源县
|
两当县
|
枞阳县
|
汶川县
|
大荔县
|
准格尔旗
|
洪泽县
|
岳阳市
|
衡东县
|
陕西省
|