关于android泄露
来源:互联网 发布:国内男士衬衣品牌 知乎 编辑:程序博客网 时间:2024/06/10 09:37
android基于java的gc机制,所以,泄露问题,应当慎之。尤其是移动端。
java的gc基于有向图原理。这篇文章很好的介绍了gc原理:http://heimaxiebo.iteye.com/blog/1835579。
简而言之,就是将gc看成一棵树,root是线程,子节点都是线程下的内存引用。如果某个引用不再被其他引用所利用,就回收之。
就像是某个娃娃对应某个爸或者妈,或者爷爷奶奶,假设是只有一个爷爷,正常情况是,爷爷不要孩子了,于是扔给野兽了,然后爷爷自己也挂了,于是一家没了,干干净净。但是突然有一天,爷爷挂了,被野兽吃了,这个孩子成了野孩子,没死干净,so,溢出出现了。
android中常见的情景是:某个activity启动了线程,activity是爷爷,线程是孙子。root是某个不明的大神,不要问我。如果孙子死得快,爷爷等会死,没问题,都没了。但问题是,孙子不听话,不知道爷爷快死了。so.当爷爷挂了的时候,孙子跑回家。
对于这种线程熊孩子的问题:
我们可以这样做。告诉熊孩子,给你个名义的家,在老子活着的时候,你还可以用点东西,老子死了,统统收回。你爱干嘛干嘛。
于是针对线程,1.我们可以加入一个static关键字。告诉编译器,这个类只是暂居与他的外层类。2.另外想引用外层类的话,就使用WeakReference,外层类挂了。在线程中判断一下,老子死了,屋子没了,咋办?凉拌吧。。。别得瑟了,赶紧交代一下工作,准备后事吧。
当然。这个孙子如果拿了太多的东西放到这个破房子里,也有可能会坏了爷爷的破屋,so。不要搞太多东西,免得上帝也头痛。不要的,尽量扔出去。
这里重点批评bitmap,如果我们没有保存bitmap的引用,就无法为他收尸了。
针对bitmap:1.可以利用SoftRefrence,在小账本里面记着孙子拿回来的东西,那一天房子不够用了,就悄悄地扔出去吧。2.命令孙子,带回家的太多bitmap,用完马上释放,3.或者,敲去边边角角,放低分辨率,才允许放行。
今天就这么多吧。下面分享一下泄露的相关文章:http://hchaojie.iteye.com/blog/1774772
http://blog.csdn.net/boliu123/article/details/7843766这篇文章的大神讲的很详细,另外还有内存泄露的调试方法
- 关于android泄露
- 关于android内存泄露
- 关于Android内存泄露问题
- 关于Android 内存泄露整理
- [Android] 关于WebView的内存泄露问题
- Android关于内存泄露的优化
- 关于Android 的内存泄露及分析
- 关于Android 的内存泄露及分析
- 关于Android 的内存泄露及分析
- 关于Android内存泄露的说明
- android关于handler的内存泄露
- 关于android内存泄露那点事
- 关于Android内存泄露的小结
- [Android] 关于WebView的内存泄露问题
- 关于android内存泄露的问题
- 关于android中使用new Message的内存泄露问题
- 关于Android 的内存泄露及分析(转)
- 关于android.view.WindowLeaked(窗体泄露)的解决方案
- 虚拟化小学习1
- MFC Static文字的字体、大小、颜色设置
- UDP打洞
- Unix考古记:一个“遗失”的shell
- 播放Android项目工程里的视频文件
- 关于android泄露
- 文件流备忘
- 不再依赖A*,利用C++编写全新寻路算法
- linux的进程通信:信号量实例(C语言)
- Ruby中的类变量于类实例变量的区别
- fdfd
- 蓝桥杯_第三届_决赛_C语言高职组_2
- 蓝桥杯_第三届_决赛_C语言高职组_3
- plsql decode的用法