内存泄漏,内存溢出,ANR

 

Android内存泄漏的检测流程、捕捉以及分析

通常内存泄漏的隐藏性质比较强,不同于异常导致的程序Crash,在异常导致的Crash中,我们能够及时的发现程序问题的存在,并通过log日志定位到问题所在的具体位置,然后及时进行解决,而内存泄漏则不同,在APP中存在内存泄漏的情况下,用户在低频率短时间的使用中,并不能察觉到有什么异样,反之,随着使用频率的提高和使用时长的增加,内存泄漏就会一直慢慢积累,消耗内存,从而会导致手机卡顿,直至APP崩溃,所以防止APP内存泄漏的出现,是至关重要的。

关于内存泄漏的检测,我们分为了以下几个阶段: 
1. 开发编码过程中,在开发过程中就不断对代码进行内存泄漏的检测 
2. 项目或者模块开发完成后,对应用进行整体的内存泄漏检测 
3. 在项目上线后,远程端检测项目是否存在内存泄漏的情况

一:开发编码过程中,检测内存泄漏

1.检测工具:LeakCanary

首先最容日上手并且效果还不错,那就要属LeakCanary,效果也直观,具体的使用配置也很简单。

  1. 在项目的build.gradle中加入以下引用:
//    内存存泄漏检测
    debugCompile   'com.squareup.leakcanary:leakcanary-android:1.5'
    releaseCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.5'
    testCompile    'com.squareup.leakcanary:leakcanary-android-no-op:1.5'
  1. 在application中初始化LeakCanary,到此处配置完成
/**        Explain : 初始化内存泄漏检测
    * @author LiXaing 
    private void initLeakCanary() {
        if (LeakCanary.isInAnalyzerProcess(this)) {
            return;
        }
        LeakCanary.install(this);
    }

 在发生内存泄漏的时候,会在通知栏出现一个提示图标,当点击进去之后,就是现在展示的这张图片,会直观的展示内存泄漏的位置。注意:通过LeakCanary的使用,它可以为我们快速找到内存泄漏的位置,但并不能够提供我们内存泄漏的原因,有的时候,内存泄漏的位置是由于其他原因导致的。

二:项目或者模块开发完成后,检测内存泄漏

android Studio中AndroidMonitor自带的一个工具—>memory,这个工具也可以说是非常的好用,先简单的介绍一下,memory虽然不可以分析出哪部分存在泄漏等情况,但可以很直观的看到内存的占用情况,看到内存的动态变化。

Android profile插件,Android studio最新的控件,可以监测cpu的使用率,网络流量监控,以及内存使用情况。 

MAT(memory analyzer Tool)工具的使用

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值