Java的四种引用

Java从1.2开始就有个不同引用的概念,废话不多说,直接上!

  • 强引用(StrongReference)

  • 软引用(SoftReference)

  • 弱引用(WeakReference)

  • 虚引用(PhantomReference

强引用(StrongReference)

在1.2之前,只有强引用,这种引用,简单来说就一个字,

没有具体的类来标识强引用,我们正常使用的变量,都是强引用!

GC(垃圾回收器)不会去回收强引用;当内存空间不足时,JVM宁愿抛出OOM(OutOfMemry)的错误使程序终止,都不会轻易回收强引用对象!

软引用(SoftReference)

当内存空间够的时候,软引用和强引用没啥区别,也是一条汉子!

BUT,当内存空间不够的时候,他就怂了,JVM会把软引用的回收,以避免OOM的产生!

弱引用(WeakReference)

弱引用是真的弱,比起软引用只有在内存不足的时候才会被回收来说,弱引用是每次GC的时候一旦被发现有他的存在就直接被回收了,不管内存够不够,反正你弱,就是要把你干掉!

虚引用(PhantomReference

形同虚设的一种引用!

听起来似乎很假,其实是真的。如果一个对象是虚引用,那就和没有引用没啥区别!

对!和没有引用没啥去别,完全不应用对象的生命周期!就是这么虚!

Execuse me,那这玩意儿有啥用??!

这个就要提一个很好用的东西,叫做:引用队列(ReferenceQueue

引用队列(ReferenceQueue

对象被垃圾回收,JVM就是这个引用加入到与之关联的引用队列中。

 

 

 

你可能感兴趣的:(Java,Android)