性能优化之内存泄露(Memory Leak)常用分析工具(另3种)

来源:互联网 发布:微信服务号 域名备案 编辑:程序博客网 时间:2024/05/01 04:46

1 Lint分析工具(效果非常好)

(1)概述
lint是随Android SDK自带的一个静态代码分析工具。它用来对Android工程的源文件进行检查,找出在正确性、安全、性能、可使用性、可访问性及国际化等方面可能的bugs和可优化提升的地方,在提交版本前检查非常有必要,作用明显。

(2)lint工作流程
针对我们的项目,通过lint.xml配置lint分析的选项,执行检查后,会针对要分析的issue生成报告。

这里写图片描述

(3)分析的范围

要对Android项目进行静态分析,首先就是指定要分析的源文件的范围。包括以下方面:

整个工程或模块。目录和文件。xml和java文件中使用标签和注解来忽略检查。lint检查结果分warningerror两个等级,可以忽略warning问题。

(4)检查的方面

检测资源文件是否有没有用到的资源。检测常见内存泄露安全问题SDK版本安全问题是否有费的代码没有用到代码的规范---甚至驼峰命名法也会检测自动生成的罗列出来没用的导包可能的bug

(5)在Android Studio中使用

在Android Studio中,通过菜单或者在Project视图以及代码视图中的右键菜单中选择Analyze > Inspect Code就可以打开lint检查的对话框Specify Inspection Scope,在这里设置好要进行代码分析的范围,确定后工具就开始对代码进行检查了,完成后会自动打开Inspection工具窗口。
下图,左边是分类了的问题,选中一个问题后,右边是针对此问题的详细说明。

这里写图片描述

(6)小结
使用lint进行代码的检查和分析十分简单高效,在发布版本前,使用lint对工程进行优化,何乐而不为。

(7)参考链接

Android代码分析工具lint学习

2 LeakCanary

(1)github
leakcanary

(2)代码

// In your build.gradle:dependencies {   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' }
public class ExampleApplication extends Application {    @Override    public void onCreate() {        super.onCreate();//        if (LeakCanary.isInAnalyzerProcess(this)) {//            // This process is dedicated to LeakCanary for heap analysis.//            // You should not init your app in this process.//            return;//        }        LeakCanary.install(this);    }}
<application        android:name=".ExampleApplication"        android:allowBackup="true"        android:icon="@mipmap/ic_launcher"        android:label="@string/app_name"        android:supportsRtl="true"        android:theme="@style/AppTheme">        <activity android:name=".MainActivity">            <intent-filter>                <action android:name="android.intent.action.MAIN" />                <category android:name="android.intent.category.LAUNCHER" />            </intent-filter>        </activity>    </application>

(3)结果

这里写图片描述

3 Allaction Tracking(Android Studio版)

追踪内存分配信息,按顺序排列,这样我们就能清晰看出来某一个操作的内存是如何一步一步分配出来的。比如在有内存抖动的可疑点,我们可以通过查看其内存分配轨迹来看短时间内有多少相同或相似的对象被创建,进一步找出发生问题的代码。

3.1 参考链接介绍

Android性能专项测试之Allocation Tracker(Android Studio)

3.2 追踪内存分配使用方法

(1)Start
这里写图片描述

(2)Stop

这里写图片描述

(3)分析
这里写图片描述

3.3 内存分配大案例

(1)图显示分配次数1W多次
这里写图片描述

(2)分配占了很大比重
这里写图片描述

0 0
原创粉丝点击