什么是Java的弱引用(Weak Reference)
来源:互联网 发布:天天向上网络直播 编辑:程序博客网 时间:2024/05/01 12:39
分类: Java2009-01-05 07:33 12006人阅读 评论(5) 收藏 举报
referencejava数据结构虚拟机string服务器
之前一直没有接触过弱引用这个概念,今天看到以后觉得挺新鲜,就查了查资料总结一下,希望对大家有所帮助。
要理解弱引用,首先要先了解一下强引用(Strong Reference), 其实我之前也并不了解强引用,虽然天天都在用。举例来说:
这就是创建了一个String的实例然后在变量abc中保存一个强引用,为什么说它强(Strong)呢?这是跟垃圾回收器相关的,如果一个对象是通过强引用链(Chain of Strong Reference) 访问到的,也就是像上面那样,那么这个对象是不会被垃圾回收器回收的, 这在正常情况下是正确的,因为你不想垃圾回收器回收你正在使用的对象。当内存空间不足时,Java虚拟机宁愿抛出OutOfMemory错误,是程序异常终止,也不会为了解决内存不足而回收这类引用的对象。这就是使用强引用的一个问题, 强引用的另外一个常见的问题就是缓存, 特别是对于那些非常大的数据结构,像图片等等,平差情况下我们是希望程序能缓存这些大的数据结构的,因为重新加载非常耗费服务器资源。因为缓存就是为了避免重新加载这些大的数据结构的,所以缓存中会保存一个指向内存中数据结构的引用,而这些引用通常都是强引用,所以这些引用会强迫这些大的数据结构保存在内存中,除非用通过某些方法户知道哪一个数据结构不再需要保存在内存中了,然后再把他从缓存中清除。
弱引用就是不保证不被垃圾回收器回收的对象,它拥有比较短暂的生命周期,在垃圾回收器扫描它所管辖的内存区域过程中,一旦发现了只具有弱引用的对象,就会回收它的内存,不过一般情况下,垃圾回收器的线程优先级很低,也就不会很快发现那些只有弱引用的对象。
弱引用可以和一个引用队列(ReferenceQueue)联合使用,如果弱引用的对象被垃圾回收的话,Java虚拟机就会把这个弱引用加入相关的引用队列中。
一下就是创建弱引用对象的例子。
String abc1 = wf.get()//如果abcde这个对象没有被垃圾回收器回收,那么abc1就指向"abcde"对象
要理解弱引用,首先要先了解一下强引用(Strong Reference), 其实我之前也并不了解强引用,虽然天天都在用。举例来说:
- String abc = new String ("abcdf");
弱引用就是不保证不被垃圾回收器回收的对象,它拥有比较短暂的生命周期,在垃圾回收器扫描它所管辖的内存区域过程中,一旦发现了只具有弱引用的对象,就会回收它的内存,不过一般情况下,垃圾回收器的线程优先级很低,也就不会很快发现那些只有弱引用的对象。
弱引用可以和一个引用队列(ReferenceQueue)联合使用,如果弱引用的对象被垃圾回收的话,Java虚拟机就会把这个弱引用加入相关的引用队列中。
一下就是创建弱引用对象的例子。
- String abc = new String("abcde");
- WeakReference<String> wf= new WeakReference<String>(str, rq);
String abc1 = wf.get()//如果abcde这个对象没有被垃圾回收器回收,那么abc1就指向"abcde"对象
- 什么是Java的弱引用(Weak Reference)
- 什么是Java的弱引用(Weak Reference)
- 什么是Java的弱引用(Weak Reference)
- 什么是Java的弱引用(Weak Reference)
- 什么是Java的弱引用(Weak Reference)
- Java的弱引用(Weak Reference)
- 什么是Java的弱引用(Weak Referenc)
- Weak Reference (弱引用)
- 强引用(Strong Reference)/软引用(Soft Reference)/弱引用(Weak Reference)/虚引用(Phantom Reference)
- java持有引用(Strong/soft/weak/phantom Reference)
- iOS如何在数组中使用弱引用(weak reference)
- weak reference的介绍
- weak reference的理解
- Understaning weak reference in Java
- java的引用( reference)
- [Java] weak reference 和 soft reference
- java的4种reference: strong, soft, weak, phantom
- java的4种reference: strong, soft, weak, phantom
- 将图片文件转化成byte[],从byte[]转化成string
- Tomcat4.01 配置全攻略
- 更改服务器名后crs无法启动
- 循环从数据库里面读出图片然后放置到ListView中的例子
- 敏捷开发:败则拼死相救,胜则举杯相庆
- 什么是Java的弱引用(Weak Reference)
- Windows 7 Lisp开发环境配置
- cocos2dx通过Jni调用Android的Java
- VS2010不能跳转到声明
- Powerpath and VxVM work together mechanism
- Qt发送HTTP请求
- 2013-07-23(周二)
- .net上传文件问题
- [转]一个“技术文化人”的片段感悟