`
wen742538485
  • 浏览: 228842 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Android内存泄漏查找

阅读更多
一、常见的内存泄漏

对于较大规模的Android应用开发,内存泄漏是个让人十分头痛的问题。一般来说,Android使用Java语言进行开发,通过GC进行内存回收。如果对象处于被引用的状态,那么GC是无法回收的。尤其是Android中Activity的Context,很容易在不易察觉的情况下被引用。Activity关闭的时候,引用该Context的对象还在使用中,致使Activity无法回收造成泄漏。而Context中有大量该Activity相关的信息以及资源,通常内存泄漏较大。

二、查看Activity是否有内存泄漏
Andorid在Eclipse中的DDMS插件比较适合用于查找内存泄漏问题。具体方法Google的SDK文档中都有介绍,简单说来就是:在DDMS中选择需要查看的进程,点击Update(绿色小桶),标签选择到Heap,点击Cause GC就能看到当前内存使用状况。注意观察data object一项,手机上不断打开关闭要测试的Activity,看该项是否不断上涨,如果不断上涨且Cause GC无法回到原来大小,则很可能是内存泄漏。

三、定位内存泄漏

Android中定位内存泄漏据我所知没有什么好的方法(如果有人知道请一定告诉我)。常用的方式是将部分代码注释掉一半,再查看DDMS内存状况,通过不断的二分法进行定位。

四、内存泄漏问题总结
(1)Android中OrientationEventListener,Enable之后,在onDestroy的时候必须Disable,否则泄漏。

(2)内存泄漏:多线程
在非UI线程(Worker Thread)中有时会用到this.wait()方法让线程进入等待状态。此时,如果Activity退出没有干涉它,那么该线程将一直处于等待状态,线程持有的对象将无法回收。所以,在Activity退出时,要notify等待的worker线程。如果线程中有长时间循环的话,要通过标志位等方法将循环结束。
分享到:
评论

相关推荐

    MTuner:MTuner是CC ++内存分析器和内存泄漏查找器,适用于Windows,PlayStation 4和3,Android和其他平台

    MTuner是用于Windows,PlayStation 4和3,Android和其他平台的C / C ++内存分析器和内存泄漏查找器。 MTuner利用一种新颖的方法进行内存分析和分析,保留了整个基于时间的内存操作历史记录。 通过查询整个数据集,...

    Android使用MAT查找内存泄漏-附件资源

    Android使用MAT查找内存泄漏-附件资源

    Android Studio+MAT实战内存泄漏

    对于内存泄漏,在Android中如果不注意的话,还是很容易出现的,尤其是在Activity中,比较容易出现,下面我就说下自己是如何查找内存泄露的。 首先什么是内存泄漏? 内存泄漏就是一些已经不使用的对象还存在于内存之...

    LeakCanary:Android的内存泄漏检测库-开源

    LeakCanary是适用于Android的可靠内存泄漏检测库。 它通过对Android Framework内部的深入了解,可以有效地检测泄漏并缩小每次泄漏的原因。 这有助于开发人员避免并显着减少OutOfMemoryError(OOM)崩溃。 内存泄漏是...

    Android内存泄漏

    本课程主要讲解在Android端怎么去排查开发的程序是否发生内存泄漏,如果发生了内存泄漏怎么去定位查找,教会如何使用Android Profiler,MAT 工具

    MTuner可执行文件

    MTuner:MTuner是C/C ++内存分析器和内存泄漏查找器,适用于Windows,PlayStation 4和3,Android和其他平台

    Android性能优化之利用Rxlifecycle解决RxJava内存泄漏详解

    其实RxJava引起的内存泄漏是我无意中发现了,本来是想了解Retrofit与RxJava相结合中是如何通过适配器模式解决的,结果却发现了RxJava是会引起内存泄漏的,所有想着查找一下资料学习一下如何解决RxJava引起的内存泄漏...

    十大热门Android开源项目 之 leakcanary

    是时候跟它说再见了,leakcanary的横空出世,让令人头疼的OOM查找变得如此轻松,只需要简单集成,就能帮你找出内存泄漏,还各种贴心提醒,真的是超赞。不过它也不是万能的,有心学好Android开发的同学,内存问题排查...

    Android插件

    帮助你在开发阶段方便的检测出内存泄露的问题,使用起来更简单方便。 可以参考以下文章: LeakCanary 中文使用说明 18.Android Postfix Completion 可根据后缀快速完成代码,这个属于拓展吧,系统已经有这些...

    Android学习系列教程实例.pdf

    Android 学习文档总结 ................... 1 DevDiv 推荐资源 ........................ 2 Windows 8 ........................................................... 2 iOS .........................................

    Databinding使用、Databinding原理、Androidx集成Databinding、Databinding源码分析、Databinding双向绑定原理

    简介 Databinding是谷歌的一个官方支持库,它...这也可以提高应用程序的性能,并有助于防止内存泄漏和空指针异常。 Androidx集成Databinding 1、将dataBinding元素添加到 build.gradle应用程序模块中 android { ......

    DoraemonKit研发助手-其他

    (iOS独有)11、【内存泄漏】 找出App中所有的内存泄漏的问题。四、视觉工具1、【颜色吸管】 方便设计师 UI 捉虫的时候,查看每一个组件的颜色值是否设置正确;2、【组件检查】 可以抓取任意一个UI控件,查看它们的...

Global site tag (gtag.js) - Google Analytics