Android性能优化及性能优化工具
目录
- 1.Allaction Tracking
- (1)追踪
- (2)分类我们的内存分配
- (3)查看统计图
- 2.LeakCanary
- (1)配置
- (2)制造一个单例内存泄漏的点
- (3)LeakCanary 发出内存泄漏通知
- (4)LeakCanary 分析
- 3.Lint分析工具
MAT
,Memory Monitor
(属于AndroidMonitor中一个模块),HeapTool
(查看堆信息),Allaction Tracking
,LeakCanary
Lint
工具
1.Allaction Tracking
(1)追踪
文章图片
在内存图中点击途中箭头的部分,启动追踪,再次点击就是停止追踪,随后自动生成一个alloc结尾的文件,这个文件就记录了这次追踪到的所有数据,然后会在右上角打开一个窗口。展示和第一种方式有点区别,各有所长,他有两种展现方式。
(2)分类我们的内存分配
文章图片
红框中:
Group by Method:用方法来分类我们的内存分配,默认会以Group by Method来组织我们用 Group by Allocator的方式来查看一下:
Group by Allocator:用内存分配器来分类我们的内存分配
可以看到我们自己包中,每一个类的内存分配次数和分配的大小。如果我们想看内存分配的实际在源码中发生的地方,可以选择需要跳转的对象,点击该按钮就能发现我们的源码。
(3)查看统计图
想看某个图层详细内存分配,则双击速表左键进入下一图层:
文章图片
内存分配情况
通过[Layout方式查看更直观:
文章图片
2.LeakCanary
(1)配置
Getting startedIn your build.gradle: dependencies {debugCompile 'com.squareup.leakcanary:leakcanary-android:1.5.2'releaseCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.5.2' }In your Application class: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); // Normal app init code...}}
(2)制造一个单例内存泄漏的点
public class CommonUtils {private static CommonUtils instance; private Context context; private CommonUtils(Context context) {this.context = context; }public static CommonUtils getInstance(Context context) {if (instance == null) {instance = new CommonUtils(context); }return instance; }} protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); CommonUtils commonUtils = CommonUtils.getInstance(this); }
(3)LeakCanary 发出内存泄漏通知
文章图片
(4)LeakCanary 分析
LeakCanary
本质上还是用命令控制生成hprof
文件分析检查内存泄漏。3.Lint分析工具
Android Studio
很方便,很好用,你可以试试点击AS菜单栏上面的Analyze
选项,然后点击Inspection
Scope
,然后选择你需要检测的范围(比如整个项目),然后AS会自动弹出下图所示的面板文章图片
文章图片
可能出现内存泄漏的类:
检测资源文件是否有没有用到的资源。【Android性能优化及性能优化工具】到此这篇关于Android性能优化及性能优化工具的文章就介绍到这了,更多相关Android性能优化内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
检测常见内存泄露
安全问题SDK版本安全问题
是否有费的代码没有用到
代码的规范---甚至驼峰命名法也会检测
自动生成的罗列出来
没用的导包
可能的bug
推荐阅读
- android第三方框架(五)ButterKnife
- Android中的AES加密-下
- 带有Hilt的Android上的依赖注入
- android|android studio中ndk的使用
- Android事件传递源码分析
- RxJava|RxJava 在Android项目中的使用(一)
- Android7.0|Android7.0 第三方应用无法访问私有库
- 数据库设计与优化
- 深入理解|深入理解 Android 9.0 Crash 机制(二)
- android防止连续点击的简单实现(kotlin)