最清楚的解释强引用,弱引用,软引用
来源:互联网 发布:知乎值得关注的博主 编辑:程序博客网 时间:2024/05/21 07:49
http://www.jianshu.com/p/bf159a9c391a
引用类型
在JDK 1.2以前的版本中,若一个对象不被任何变量引用,那么程序就无法再使用这个对象。也就是说,只有对象处于可触及(reachable)状态,程序才能使用它。从JDK 1.2版本开始,把对象的引用分为4种级别,从而使程序能更加灵活地控制对象的生命周期。这4种级别由高到低依次为:强引用、软引用、弱引用和虚引用。
Java/Android引用类型及其使用分析
1. 强引用(Strong reference)实际编码中最常见的一种引用类型。常见形式如:A a = new A();等。强引用本身存储在栈内存中,其存储指向对内存中对象的地址。一般情况下,当对内存中的对象不再有任何强引用指向它时,垃圾回收机器开始考虑可能要对此内存进行的垃圾回收。如当进行编码:a = null,此时,刚刚在堆中分配地址并新建的a对象没有其他的任何引用,当系统进行垃圾回收时,堆内存将被垃圾回收。2. 软引用(Soft Reference)
软引用的一般使用形式如下:A a = new A();
SoftReference<A> srA = new SoftReference<A>(a);软引用所指示的对象进行垃圾回收需要满足如下两个条件:
1.当其指示的对象没有任何强引用对象指向它;
2.当虚拟机内存不足时。
因此,SoftReference变相的延长了其指示对象占据堆内存的时间,直到虚拟机内存不足时垃圾回收器才回收此堆内存空间。3. 弱引用(Weak Reference)
同样的,软引用的一般使用形式如下:A a = new A();
WeakReference<A> wrA = new WeakReference<A>(a);WeakReference不改变原有强引用对象的垃圾回收时机,一旦其指示对象没有任何强引用对象时,此对象即进入正常的垃圾回收流程。
4. 虚引用(Phantom Reference)
与SoftReference或WeakReference相比,PhantomReference主要差别体现在如下几点:
1.PhantomReference只有一个构造函数PhantomReference(T referent, ReferenceQueue<? super T> q)
2.不管有无强引用指向PhantomReference的指示对象,PhantomReference的get()方法返回结果都是null。
因此,PhantomReference使用必须结合ReferenceQueue;与WeakReference相同,PhantomReference并不会改变其指示对象的垃圾回收时机。
阅读全文
0 0
- 最清楚的解释强引用,弱引用,软引用
- 强引用,软引用,弱引用,虚引用解释
- 强引用 软引用 弱引用 虚引用的区别
- 强引用,软引用,弱引用,虚引用的区别
- Java的强引用、软引用、弱引用、虚引用
- 强引用,软引用,弱引用,虚引用的使用
- 强引用,软引用,弱引用,虚引用的对比
- java的强引用,软引用,弱引用,虚引用
- 强引用、弱引用、软引用、虚引用的理解
- java的强引用、软引用、弱引用、虚引用
- 强引用 弱引用 软引用
- Java 强引用,软引用,弱引用
- java 强引用 软引用 弱引用
- 强引用弱引用软引用
- java 强引用,弱引用,软引用
- 强引用 弱引用 软引用区分
- 强引用,软引用与弱引用
- 强引用,软引用,弱引用
- How to Debug issue’s Related to VoIP Call
- Hadoop2.8.1伪分布式搭建
- 字符,字节和编码
- Spring注解开发
- CSS性能优化
- 最清楚的解释强引用,弱引用,软引用
- 欢迎使用CSDN-markdown编辑器
- Java
- Eclipse中通过Maven创建的web项目不能将project facet设置为 dynamic web module 3.0
- 神经网络机器翻译模型介绍-ConvS2S
- split 分割 字符串(分隔符如:* ^ : | , .) 及注意点
- C++进阶—> CloseHandle详解及CloseHandle后线程未停
- HTML CSS
- 关于为何jstl渲染的数据应存放在request内