随笔-30  评论-67  文章-0  trackbacks-0
最近看文档的时候偶然看到java里头居然还有SoftReference、WeakReference 和 PhantomReference这些东西。仔细看了看,发现sun现在越来越有个性,居然加了这些鸡肋。感觉sun这厮就是把程序员当tester,经常弄些垃圾忽悠大家。
posted on 2006-05-11 10:09 含笑半步癫 阅读(5267) 评论(24)  编辑 收藏 引用 所属分类: java

评论:
# re: java里头居然还有SoftReference、WeakReference 和 PhantomReference 2006-10-18 19:10 | Eastsun
晕...
鸡肋??
即使你没用过,不知道它的用处,也不应该瞎讲啊。
不说别人最多当你是个哑巴,乱讲就暴露出LZ的无知了。  回复  更多评论
  
# re: java里头居然还有SoftReference、WeakReference 和 PhantomReference 2006-10-26 18:49 | 含笑半步癫
请先理解鸡肋表答的意思.
再你介绍一下你使用SoftReference、WeakReference 和 PhantomReference的成功案例,说明一下这些东西确实超过鸡肋的地方.
还有看你说话的语气,以及对人不对事的态度就知道你的水平.  回复  更多评论
  
# re: java里头居然还有SoftReference、WeakReference 和 PhantomReference 2007-05-24 14:07 | aaa
水平不行不是你的问题,拿出来show就不好了  回复  更多评论
  
# re: java里头居然还有SoftReference、WeakReference 和 PhantomReference 2007-08-15 10:41 | SUN
正义不容藐视  回复  更多评论
  
# re: java里头居然还有SoftReference、WeakReference 和 PhantomReference 2008-06-20 11:17 | 孤山客
LZ确实有点那个了。
假如因为某个原因需要引用某个对象,但又不想干扰那个对象【包括垃圾回收】,那就得用它了。我实现我的MXBean时就用了。
其实C++里也是用类似的概念,如boost里的weak_ptr

最爱用java开发,最喜欢C++,矛盾啊
  回复  更多评论
  
# re: java里头居然还有SoftReference、WeakReference 和 PhantomReference 2008-07-10 16:10 | niming
sj  回复  更多评论
  
# re: java里头居然还有SoftReference、WeakReference 和 PhantomReference 2008-12-11 09:23 | CleeSan
飘过……楼主……实现过高内存压力的缓存没?
莫非强人打算用Daemon Thread实现缓存释放~  回复  更多评论
  
# re: java里头居然还有SoftReference、WeakReference 和 PhantomReference 2009-02-03 11:36 | [v]
LZ初学者,,小孩子乱讲话,,大家消消气。。。搜到这样的博客真倒霉。。。。  回复  更多评论
  
# re: java里头居然还有SoftReference、WeakReference 和 PhantomReference 2009-04-28 22:55 | yza
这年头什么人都写博客,中国程序员的耻辱啊  回复  更多评论
  
# re: java里头居然还有SoftReference、WeakReference 和 PhantomReference[未登录] 2009-04-29 16:38 | DD
lz技术还没入门,还是初学者阶段,年薪不会超过24万,不知道什么杂牌学校毕业,杂牌公司里工作  回复  更多评论
  
# re: java里头居然还有SoftReference、WeakReference 和 PhantomReference 2009-04-30 17:08 | xx
楼上各位高手说说这几个东西如何使用吧?高手都是什么都不说,一上来就搞人身攻击?  回复  更多评论
  
# re: java里头居然还有SoftReference、WeakReference 和 PhantomReference 2009-08-12 15:09 | passby
不是不想说,而是lz既然说出了这种话,就表明说了你也听不懂。“高内存压力的缓存”,lz尝试实现一个。  回复  更多评论
  
# re: java里头居然还有SoftReference、WeakReference 和 PhantomReference 2009-08-31 15:54 | 育森
什么玩意儿。。。倒霉  回复  更多评论
  
# re: java里头居然还有SoftReference、WeakReference 和 PhantomReference 2009-09-04 00:13 | yishen
个人认为Java中Reference的用途基于如下原理:
由于Java中Garbage Collector对于Reference对象的特殊对待(三中子类稍有不同,详细资料可查阅相关资料),当Reference内所封装的Referant变为unreachable的时候,Garbage Collector会收集其所占用的内存空间。结合ReferenceQueue的使用可以对垃圾收集的过程进行细粒度的监控和处理。
LZ说毫无用处未免太过偏激!
具体使用细节欢迎来信探讨,同时欢迎来信探讨Java底层机制的相关内容。bcyishen@163.com  回复  更多评论
  
# re: java里头居然还有SoftReference、WeakReference 和 PhantomReference 2009-09-28 10:41 | 阿光
无语了,这么好的功能居然说鸡肋???
洗洗睡吧  回复  更多评论
  
# re: java里头居然还有SoftReference、WeakReference 和 PhantomReference[未登录] 2009-10-27 16:46 | Jack
SoftReference、WeakReference 和 PhantomReference

那他们一般都用在那些场景下了:
罗列一些吧。
谢谢了。
我也初学,做Java EE 的。之前很少用这个。  回复  更多评论
  
# re: java里头居然还有SoftReference、WeakReference 和 PhantomReference 2010-01-22 14:07 | 山炮
Java引用对象SoftReference WeakReference PhantomReference(二)2008-04-12 13:28四、Java对引用的分类

级别
什么时候被垃圾回收
用途
生存时间


从来不会
对象的一般状态
JVM停止运行时终止


在内存不足时
对象简单?缓存
内存不足时终止


在垃圾回收时
对象缓存
gc运行后终止

假象
Unknown
Unknown
Unknown


1、强引用:

public static void main(String[] args) {

MyDate date = new MyDate();

System.gc();

}

解释:即使显式调用了垃圾回收,但是用于date是强引用,date没有被回收

2、软引用:

public static void main(String[] args) {

SoftReference ref = new SoftReference(new MyDate());

drainMemory(); // 让软引用工作

}

解释:在内存不足时,软引用被终止,等同于:

MyDate date = new MyDate();


//-------------------由JVM决定运行-----------------

If(JVM.内存不足()) {

date = null;

System.gc();

}

//-------------------------------------------------------------

3、弱引用:

public static void main(String[] args) {

WeakReference ref = new WeakReference(new MyDate());

System.gc(); // 让弱引用工作

}

解释:在JVM垃圾回收运行时,弱引用被终止,等同于:

MyDate date = new MyDate();


//------------------垃圾回收运行------------------

public void WeakSystem.gc() {

date = null;

System.gc();

}

4、假象引用:

public static void main(String[] args) {

ReferenceQueue queue = new ReferenceQueue();

PhantomReference ref = new PhantomReference(new MyDate(), queue);

System.gc(); // 让假象引用工作

}




  回复  更多评论
  
# re: java里头居然还有SoftReference、WeakReference 和 PhantomReference 2010-09-06 15:24 | passer
确实是含笑半步癫的水准  回复  更多评论
  
# re: java里头居然还有SoftReference、WeakReference 和 PhantomReference 2011-11-24 18:01 | 你妹
怎么搜到了这样的垃圾文章,Google的算法不给力啊,不是评论多就是好文章。  回复  更多评论
  
# re: java里头居然还有SoftReference、WeakReference 和 PhantomReference 2012-01-30 15:09 | burtonQ
看了楼上各位,我忍不住的想刘明  回复  更多评论
  
# re: java里头居然还有SoftReference、WeakReference 和 PhantomReference 2012-04-20 20:23 | kjsolo
真失败,搜到这篇文章  回复  更多评论
  
# re: java里头居然还有SoftReference、WeakReference 和 PhantomReference 2012-10-31 18:28 | 楼主哈哈笑
倒了八辈子霉,搜到这种文章,哎  回复  更多评论
  
# re: java里头居然还有SoftReference、WeakReference 和 PhantomReference 2013-04-02 17:15 | 谢谢解答
@山炮
你的解答很强的  回复  更多评论
  

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理