android 对象 引用,Android 引用

引用,用于操作对象

User user = new User();//强引用

//此时,user就是引用

User u1 = user;

//此时,user持有可以操作的对象User,同时也被u1持有,user、u1同时关联一个对象

一个对象可以被多个引用持有,且可以是被不同的引用持有

Android有四种引用

1.强引用(StrongReference)

2.软引用(SoftReference)

3.弱引用(WeakReference)

4.虚引用(PhantomReference)

Object ob = new Object();

SoftReference sOb= new SoftReference(ob);//适用缓存应用

WeakReference wOb= new WeakReference(ob);

ReferenceQueue rq= new ReferenceQueue();

PhantomReference p = new PhantomReference("abc",rq);

ob = null;

System.gc();

1.强引用:

使用最多的一种引用,如:创建一个成员变量、new出一个对象...

强引用可以直接访问目标对象,强引用所关联的对象,在任何时候都不会被内存回收,JVM宁可抛出OOM(out of memory)异常,也不会对强引用进行回收,所以在通常的内存泄漏中,很多都是强引用的原因

2.软引用:

软引用是出了强引用之后最强的引用,不同在于软引用可以被内存回收的

回收机制:当内存充足时,在GC时不会去回收当前的软引用,当内存临近阈值或者不足时,在GC的时候发现某一对象只具有软引用时,当前引用会被回收

当一个对象具有软引用又具有强引用时,是不会被回收的。只会收回只具有软引用的对象

3.弱引用:

弱引用是比软引用、强引用更弱的引用,GC时无论内存是否充足,发现某一处对象只具有弱引用时,当前引用就会被回收。

4.虚引用:

虚引用不能保证其保存对象的生命周期,若被保存的对象只有虚引用,则有效期完全随机与GC的回收,在任何一个不确定的时间内都可能被回收。

虚引用不同于其他引用在于,使用PhantomRefrence时必须要和ReferenceQueue联合使用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值