Android性能优化笔记(三)

1. 引用分类

(1)强引用:   Object o = new Object ,平时用的最多的。

(2)软应用:  内存不足时回收,常用于缓存图片

(3)弱引用:不管内存是否足,都回收。GC扫描2次就回收,常用于引用activity的context。

(4)虚引用:用于跟踪GC回收的通知。

  软弱引用与引用队列结合的使用场景:

    软引用和弱引用如果与一个引用队列关联起来的话,那么它们所指向的对象被回收后,引用会被保存在引用队列里。

    往往通过查询引用队列中是否有值(元素为引用变量),来判断引用所指向的对象是否已被回收。

  虚引用与引用队列结合的使用场景:

     也会关联一个引用队列,不同的是对象再准备回收的时候,虚引用会加入队列,而不是软弱应用那样:对象被回收后

     才加入到引用队列。因此虚引用往往用来处理对象将要回收 前的工作,例如资源释放等。当引用队列中的虚引用被清空时,         说明对象这次是彻底被释放了。

 

2. 引用计数

Object  object 1 = new Object();   //  new的这个对象的引用计数为1

Object  object 2 = object 1;      //引用计数为2

当这个对象的引用计数为0时才释放。

 

3. 内存泄露

3.1 原因:

所以当你把Activity的context传到另一个类或者耗时的线程里去,当Activity页面返回销毁时,这个Activity类对象并没有被回收,

它还会占用内存,因为那个线程还正在运行,并且还引用着Activity(引用计数不为0),直到线程运行结束。在这里Activity会短暂的发生内存泄露,如果这个线程是个死循环,停不下来,那么Activity页面的销毁将长时间内存泄露。

3.2  内存监测工具

       未完待续。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

冉航--小虾米

希望得到您的鼓励和交流

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值