android客户端学习-强引用,软引用,弱引用,虚引用

强引用:SrongReference

程序大部分引用实际都是强引用,如果一个对象具有强引用,垃圾回收机制绝不会回收它,即使当程序内存不足的时候,程序即使选择崩溃,报OutOfMemory异常,也不会回收这个对象

软引用:SoftReference

一般对于会占用一定资源,但是又不是很重要的对象,或者一些占用大量内存资源的一些缓存的变量,就像可以使用软引用,比如bitmap。如果内存充足,则垃圾回收机制不会回收该对象,但是如果内存不足,垃圾回收机制线程扫描的过程中,如果发现了该软引用对象,就会将其内存收回。

使用软引用以后,在OutOfMemory异常发生之前,这些缓存的图片资源的内存空间可以被释放掉的,从而避免内存达到上限,避免Crash发生。

需要注意的是,在垃圾回收器对这个Java对象回收前,SoftReference类所提供的get方法会返回Java对象的强引用,一旦垃圾线程回收该Java对象之后,get方法将返回null。所以在获取软引用对象的代码中,一定要判断是否为null,以免出现NullPointerException异常导致应用崩溃。

使用方法:


弱引用:WeakReference

弱引用的强度又明显低于软引用,垃圾回收机制线程扫描的过程中,如果发现了该弱引用对象,就会将其内存收回。


虚引用  PhantomReference:

      虚引用其实和上面讲到的各种引用不是一回事的,他主要是为跟踪一个对象何时被GC回收。在android里面也是有用到的:FileCleaner.java 



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值