性能优化之内存泄露(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检查结果分warning和error两个等级,可以忽略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)分配占了很大比重
- 性能优化之内存泄露(Memory Leak)常用分析工具(另3种)
- 性能优化之内存泄露(Memory Leak)分析
- 性能优化之内存泄露(Memory Leak)解决
- 性能优化之内存泄露
- 性能分析之内存优化
- Anfroid性能优化之内存泄露篇
- Android性能优化之内存泄露篇
- Android性能优化之内存泄漏分析工具LeakCanary
- Linux系统性能之内存(memory)
- 性能优化三之内存泄漏分析工具使用以及如何分析
- Android性能优化之内存
- Android性能测试之内存分析以及MAT工具
- Android优化浅谈之内存泄露
- Android内存优化之内存泄露
- Android性能优化(四)之内存优化实战
- windows客户端性能测试之内存泄露检查工具umdh.exe
- windows客户端性能测试之内存泄露检查工具umdh.exe
- Android性能优化之内存优化
- IOS 创建圆角矩形按钮及设置阴影等其他属性
- Java基本信息采集程序
- linux 管道读写规则
- scala中的函数、变量、集合、对象---scala学习笔记(1)
- Android提供的android-support-v7出错
- 性能优化之内存泄露(Memory Leak)常用分析工具(另3种)
- 项目管理利器(Maven)——maven介绍及环境搭建
- Fragment详解之二——基本使用方法
- 定义类Person,可以存放每个学生的姓名,年龄,成绩
- 161114
- A+B_Problem 解答
- 【jzoj4891】【摆书】
- Unity3D内置Shader私房课(一)视差Parallax
- 个人记录-LeetCode 30. Substring with Concatenation of All Words