Android性能优化笔记(三)

举报
yd_57386892 发表于 2020/12/29 01:06:47 2020/12/29
【摘要】 1. 引用分类 (1)强引用:   Object o = new Object ,平时用的最多的。 (2)软应用:  内存不足时回收,常用于缓存图片 (3)弱引用:不管内存是否足,都回收。GC扫描2次就回收,常用于引用activity的context。 (4)虚引用:用于跟踪GC回收的通知。   软弱引用与引用队列结合的使用场...

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  内存监测工具

       未完待续。

 

 

文章来源: blog.csdn.net,作者:冉航--小虾米,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/gaoxiaoweiandy/article/details/108357224

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。