- 卡顿
- 工具
LeakCanary是Square公司为Android开发者提供的一个自动检测内存泄漏的工具
Android手机对应用都有个最大内存使用限制
// 打印看一下手机跟APP分配的内存信息
public void getMemoryInfo() {
StringBuilder sb = new StringBuilder();
ActivityManager am = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
int memoryMax = am.getMemoryClass();
int memoryLarge = am.getLargeMemoryClass();
sb.append("memoryMax:" + memoryMax + " | ");
sb.append("memoryLarge:" + memoryLarge);
Log.i("MEMO", sb.toString());
}
内存泄露常见场景
- String拼接采用StringBuilder
- 复用系统自带资源
- RecycleView的ViewHolder复用
- 避免onDraw()方法中执行对象的创建
- 避免Activity泄露
- 用Application的Context
- 注意Cursor对象及时关闭
- ArrayMap跟HashMap相比效率高
- 图片压缩(鲁班压缩等)
- 代码编写规范,避免内存抖动等问题
内存检测
目前内存检测手段
- https://developer.android.google.cn/studio/profile/memory-profiler
- https://www.jianshu.com/p/8ad323834338
- https://www.jianshu.com/p/7cd328fbfd68
- https://blog.csdn.net/a_maker/article/details/78958587
- https://www.liaohuqiu.net/cn/posts/leak-canary-read-me/
- https://blog.csdn.net/Double2hao/article/details/78784758
- https://blog.csdn.net/u014651216/article/details/80205113
- https://www.imooc.com/u/3771512/articles
- 给 App 提速:Android 性能优化总结
- Android 优化指南
- 10 条提升 Android 性能的建议
- 完美解决AppBarLayout的滑动问题
- Android之硬件加速
- Android 最佳实践之工具
- Android性能优化-检测App卡顿
- LeakCanary使用详细教程(附Demo)
- LeakCanary