加入联盟
登录
本站特色:极好的技术研究氛围!所有技术发帖,必有回复!
做最受欢迎的Java论坛
本站公告
论坛
搜索
博客
帮助
导航
默认风格
blue
brown
gray
green
greyish-green
orange
pink
purple
red
violet
默认风格_BQm5
私人消息 (0)
公共消息 (0)
系统消息 (0)
好友消息 (0)
帖子消息 (0)
疯狂Java联盟
»
疯狂书籍交流版
» 《程序员基本功16课》中的"软引用"学习疑问
返回列表
发帖
crazyit
发短消息
加为好友
crazyit
(回顾自然)
当前离线
UID
4341
帖子
348
主题
7
精华
0
积分
560
疯狂金币
260
疯狂水晶
0
疯狂勋章
0
阅读权限
40
在线时间
126 小时
实习记者
帖子
348
主题
7
精华
0
积分
560
疯狂金币
260
疯狂水晶
0
在线时间
126 小时
1
#
跳转到
»
倒序看帖
打印
字体大小:
t
T
发表于 2010-5-22 15:42
|
只看该作者
八年沉淀,王者归来——疯狂软件教育中心强势回归,李刚老师携疯狂Java团队
“十年磨一剑”
地打造最强悍的软件培训。
[突破基本功16课]
《程序员基本功16课》中的"软引用"学习疑问
在《突破程序员基本功的16课》
第106面
讲到了“软引用”的用法
其好处是
“当heap不足时,系统也可以回收软引用引用的对象,从而提高程序运行性能,避免垃圾回收”
复制代码
象我项目中有如下代码
........
List<Object[]> objList=getObjectList(sql);
List<ReceiptBean> list=new ArrayList<ReceiptBean>();
for(Object[] obj:objList)
{
//原来我的写法,是下面的强引用
// ReceiptBean rb=new ReceiptBean();
//现在学习了该书上讲的"软引用"后,我变成了如下的写法
SofeReference<ReceiptBean > sr=new SoftReference<ReceiptBean >(new ReceiptBean());
...
sr.get().setName((String)obj[0]);
sr.get().setSex((String)obj[1]);
....
list.add(sr.get());
//通知系统进行垃圾回收
System.gc();
System.runFinalization();
}
复制代码
我在上面代码中获得的List,其中封装的都是ReceiptBean类对象,假设上面List获得封装有10000个,也就是上面,要开辟10000个“软引用”,一旦获得10000个“软引用”封装到List,最后再封装到request或session中,输出到jsp页面中。。
如果此时,heap内存不足时,如果一旦回收了其中的某些“软引用”,那不是List中封装的ReceiptBean类对象就变成了null对象,在jsp页面,显示不了啊。。。
希望站长,能对此为读者解惑一下,先谢谢了!
[
本帖最后由 crazyit 于 2010-5-22 16:11 编辑
]
提问赏金:5金币
获奖名单 :
kongyeeku(
5
金币)
收藏
分享
0
0
0
支持
反对
成功的人不是赢在起点,而是赢在转折点!
kongyeeku
发短消息
加为好友
kongyeeku
(一秒)
当前离线
UID
3
帖子
2955
主题
30
精华
6
积分
10818
疯狂金币
5901
疯狂水晶
5
疯狂勋章
0
阅读权限
100
在线时间
2902 小时
疯狂Java技术组长
帖子
2955
主题
30
精华
6
积分
10818
疯狂金币
5901
疯狂水晶
5
在线时间
2902 小时
2
#
发表于 2010-5-22 16:27
|
只看该作者
八年沉淀,王者归来——疯狂软件教育中心强势回归,李刚老师携疯狂Java团队
“十年磨一剑”
地打造最强悍的软件培训。
是的。
软引用所引用的对象可能会被垃圾回收器所回收,因此如果你要传递到JSP页面中的对象不应该使用软引用。
那到底在何时使用呢?
你想想——就像你家有100张椅子,你确定2天之后一定要用到这100张椅子(比如你是开餐馆的,2天之后你就要宴请100个人),那你不应该是用这种可能导致椅子被“扔掉”的机制。
如果你家只是一个椅子租赁机构,你除了租赁椅子,还要租赁其他的东西,你可以把内存想象成你家的仓库,当你的其他东西越来越多、仓库不够用时,软引用机制可以保证仓库自动"扔掉"部分暂时不使用的椅子。
——那么如果下次有100个人再来租椅子怎么办呢?可能你的软引用所引用的椅子都被没了,所以你应该在把椅子租赁出去之前,先去判断椅子是否还存在。
想到这是什么场景了吗?这是典型的池。所以一般在这种场景下可以考虑使用软引用、弱引用。
——在TopLink中有几个配置参数都涉及软引用、弱引用的知识。
生命没有假期!
如果生命只剩下最后一秒,你可会想到我?
TOP
crazyit
发短消息
加为好友
crazyit
(回顾自然)
当前离线
UID
4341
帖子
348
主题
7
精华
0
积分
560
疯狂金币
260
疯狂水晶
0
疯狂勋章
0
阅读权限
40
在线时间
126 小时
实习记者
帖子
348
主题
7
精华
0
积分
560
疯狂金币
260
疯狂水晶
0
在线时间
126 小时
3
#
发表于 2010-5-22 16:53
|
只看该作者
八年沉淀,王者归来——疯狂软件教育中心强势回归,李刚老师携疯狂Java团队
“十年磨一剑”
地打造最强悍的软件培训。
哈,谢谢站长了。。经过站长上面形象的比如,我基本明白了。
。我再来好好体会一下吧..
成功的人不是赢在起点,而是赢在转折点!
TOP
返回列表
Java基础讨论版
新手报到、自我介绍版
电子书、技术文档交流版
SSH、EJB企业应用讨论版
Java游戏、桌面应用讨论版
经验感受,闲聊吹水交流版
服务器、Web容器讨论版
公告发布版
HTML5/CSS3/Ajax前端技术讨论版
持久化技术讨论版
企业开发技术区
中间层技术讨论版
手机平台开发版
Java Web技术讨论版
MVC框架讨论版
持久化技术讨论版
Java基础讨论版
服务器、Web容器讨论版
HTML5/CSS3/Ajax前端技术讨论版
工作流、业务流程管理讨论版
软件工程、开发工具讨论版
Ruby、Rails技术讨论版
疯狂书籍交流版
电子书、技术文档交流版
其他技术讨论版
疯狂专区
线下聚会、活动建议发布版
经验感受,闲聊吹水交流版
新手报到、自我介绍版
团队培训、技术培训咨询版
招聘、外包信息发布版
项目开发专区
Java游戏、桌面应用讨论版
JSP、MVC Web应用讨论版
SSH、EJB企业应用讨论版
版务讨论区
公告发布版
版主申请版
建议版
[收藏此主题]
[关注此主题的新回复]
[通过 QQ、MSN 分享给朋友]