关于Android的内存泄漏:如何…
来源:互联网 发布:服务器端口开启 编辑:程序博客网 时间:2024/06/06 02:59
(1) 不同的引用类型:
Java2平台里面引入了java.lang.ref包,这个包中的类可以让我们引用对象,但这些对象可以不用停留在内存中。这些引用类和Java本身的垃圾回收器还存在一定的交互(在垃圾回收的不同阶段)。
Java对引用的分类(Strongreference, SoftReference, WeakReference, PhatomReference):
级别
什么时候被垃圾回收
用途
生存时间
强
从来不会
对象的一般状态
JVM停止运行时终止
软
在内存不足时
对象简单?缓存
内存不足时终止
弱
在垃圾回收时
对象缓存
gc运行后终止
假象
Unknown
Unknown
Unknown
(2)Android下怎样避免内存泄漏?
Refer:http://android-developers.blogspot.com/2009/01/avoiding-memory-leaks.html
有人问:static的Drawable在被重新链入一个TextView后,其callback是否也被重置,即原来的callback被丢弃呢?如果不,Android的实现好像有问题哟!
(3)如何查找内存泄漏:
refer:http://www.cnblogs.com/lbeing/archive/2010/09/29/1838858.html
如何用Memory AnalyzerTool(MAT)来分析,前提是Android开发和测试的工具安装完整,SDK,Eclipse.
更多关于MAT的内容,refer:
1).打开Eclipse
2).选择
3).在Work with中添加站点:http://download.eclipse.org/mat/1.0/update-site/(这个地址可能会变化,但是新的地址可以在官方网站上找到:http://www.eclipse.org/mat/downloads.php
4).生成.hprof文件:插入SD卡(Android机器很多程序都需要插入SD卡),并将设备连接到PC,在Eclipse中的DDMS中选择要测试的进程,然后点击UpdateHeap
.hprof
运行cmd打开命令行,cd到
OK,到此为止,.hprof文件处理完毕,可以用来分析内存泄露情况了。
5).打开MAT:
在Eclipse中点击Windows->OpenPerspective->Other->MemoryAnalysis
6).导入.hprof文件
在MAT中点击
这时会列出所有可疑类,右键点击某一项,并选择Path to GCRoots->exclude weak/softreferences,会进一步筛选出跟程序相关的所有有内存泄露的类。据此,可以追踪到代码中的某一个产生泄露的类。
- 关于Android的内存泄漏:如何…
- Android:关于ListView的内存泄漏问题
- 关于android内存泄漏的研究
- 关于Android内存泄漏的优秀文章
- 关于Android内存泄漏的工具
- 关于android内存泄漏的两篇好文章
- Android 关于内存泄漏的一些总结
- 关于Android中的内存溢出和内存泄漏的问题
- (转载)Java中关于内存泄漏出现的原因以及如何避免内存泄漏
- Java中关于内存泄漏出现的原因以及如何避免内存泄漏
- Java中关于内存泄漏出现的原因汇总及如何避免内存泄漏
- 如何避免Android内存泄漏
- 如何避免Android内存泄漏
- .如何避免Android内存泄漏
- 如何避免Android内存泄漏
- android如何分析内存泄漏
- Android 的内存泄漏
- 关于如何发现Delphi程序的内存泄漏
- 创建一个简单的 iOS 5 iPhone App 教程
- Java1.5的新特性
- __dopostback的用法
- 删除win7文件的默认打开方式
- 【转载】Android最佳实践之响应灵…
- 关于Android的内存泄漏:如何…
- Android文档笔记:服务(一)
- Android文档笔记:服务(二)-创建…
- Java多线程编程,模拟售票
- Android文档笔记:服务(三)-创建…
- 1.5 类的简介
- Android文档笔记:服务(四)- 通…
- Android文档笔记:通知(一)
- Android文档笔记:通知(二)