目录
内存优化
只能硬件设备当前的性能导致很多开发者 开始不再关注内存处理相关,其实这是有问题的,目前的智能设备就相当于一个app的大盒子,如果每个app的开发者都不关心内存消耗的话那智能设备就会出现越用越卡的情况出现
说到Android的内存优化,不得不提到java虚拟机的内存优化。因为目前主流的app还是基于java或者kotlin这样的基于虚拟机的语言来开发的。所以本文还是基于java虚拟机的内存优化
内存泄露
内存泄露的内存主要指的是对象的内存,也就是虚拟机的堆内存,内存泄漏的概念区分于oom,oom是app使用的堆内存超过系统分配的内存以后,系统对app进行异常回收并退出的情况,而内存泄露指的是存在不需要继续被使用(Gc root 已经断开)但是还一直占用内存的对象存在
说到内存优化,自然我们需要一些比较厉害的工具来辅助我们生产一些指标或者查找可能造成内存泄露的原因定位
内存泄露分析工具
公司里分析内存泄露和内存溢出的常用步骤大概如下
-
使用LeakCanary进行初步排查;
-
使用Android studio自带的Android Profiler分析;
-
使用MemoryAnalyzer(MAT)详细分析;
我们这里就大概讲一下常用的分析工具的使用
LeakCanary
Square公司,可以直接在手机端查看内存泄露的工具本质上还是用命令控制生成hprof文件分析检查内存泄露。通过如下明细的提示可以快速定位到内存泄露的点
源码地址:https://github.com/square/leakcanary
内存泄露分析:
https://square.github.io/leakcanary/fundamentals/
代码引用:
// debugImplementation because LeakCanary should only run in debug builds.
debugImplementation ‘com.squareup.leakcanary:leakcanary-android:2.0-beta-3’
application的onCreate LeakCanary.install(this);