文章目录

  • 一、 内存泄漏排查 ( Android Profiler 工具 )
  • 二、 Android Profiler 内存监测相关功能
  • 三、内存快照分析



内存泄漏原理 : 长生命周期对象 , 持有短生命周期对象的引用 , 并且是强引用持有 , GC 无法释放该短生命周期对象引用 , 造成 OOM ;

Android Profiler 工具参考官方文档 : 使用 Memory Profiler 查看 Java 堆和内存分配





一、 内存泄漏排查 ( Android Profiler 工具 )



1. 内存泄漏排查 : 开发过程中 , 应该每隔一段时间都要检查下内存情况 , 连上手机 , 从 Android Studio 中安装应用到手机中 , 打开 Android Profiler 工具 , 查看 MEMORY 一栏 , 每个界面 , 每个功能都使用一下 , 查看内存使用情况 ;


2. Android Profiler 工具使用前提 : 只有从当前 Android Studio 中通过 adb 工具安装运行的应用 , 才能再 Android Studio 底部显示 Android Profile 选项卡 , 才能在 Android Profiler 工具 中查看 ;

【Android 内存优化】Android Profiler 工具常用功能 ( 监测内存 | 内存快照 )_第1张图片


3. 打开 Android Profiler 面板 : 应用通过 adb 安装运行后 , 界面如下图所示 , 此时还没有添加要监控的进程 ;

【Android 内存优化】Android Profiler 工具常用功能 ( 监测内存 | 内存快照 )_第2张图片


选择监控进程 : 点击 SESSIONS 面板的加号按钮 , 选择对应手机运行的可监控进程 ;

【Android 内存优化】Android Profiler 工具常用功能 ( 监测内存 | 内存快照 )_第3张图片


也可以点击运行按钮右侧的 Profile ‘app’ 按钮 , 进入如下界面 , 前提是该应用时通过 Android Studio 安装的 ;

【Android 内存优化】Android Profiler 工具常用功能 ( 监测内存 | 内存快照 )_第4张图片

此时就可以监控该应用的内存情况了 ;

【Android 内存优化】Android Profiler 工具常用功能 ( 监测内存 | 内存快照 )_第5张图片

点击上图中的 Memory 区域 , 红框框起来的区域 , 即可进入如下内存监控界面 ;

【Android 内存优化】Android Profiler 工具常用功能 ( 监测内存 | 内存快照 )_第6张图片





二、 Android Profiler 内存监测相关功能



请求执行 GC 垃圾回收操作 ( 重要功能能 ) : 垃圾桶按钮 , 强制执行 GC 操作 ( Force garbage collection ) , 也可以使用 Ctrl + G 快捷键 ;

【Android 内存优化】Android Profiler 工具常用功能 ( 监测内存 | 内存快照 )_第7张图片


保存快照 ( 重要功能能 ) : 保存一份当前 Java 内存快照 ( Dump Java Heap ) , 保存某个时刻的内存运行情况 ;

【Android 内存优化】Android Profiler 工具常用功能 ( 监测内存 | 内存快照 )_第8张图片


时间缩放 : 右侧的加号 , 减号 , 用于缩放时间 ;

【Android 内存优化】Android Profiler 工具常用功能 ( 监测内存 | 内存快照 )_第9张图片





三、内存快照分析



1. 保存内存快照 : 查看内存泄漏 , 首先强制 GC 回收一下内存 , 然后 Dump 一份内存快照 ;

【Android 内存优化】Android Profiler 工具常用功能 ( 监测内存 | 内存快照 )_第10张图片

上图中的内存快照中 , 反射了当前运行的所有内存对象 ;


2. 选择根据包查看对象 : 在类排列选项中 , 选择 “Arrange by package” 选项 , 这样就可以比较有条理的查找内存中有哪些对象 ;

【Android 内存优化】Android Profiler 工具常用功能 ( 监测内存 | 内存快照 )_第11张图片



3 . Heap Dum 内存信息 : 打开我们自己写的代码 , 在下面的 Heap Dum 信息面板中 , 查看如下内容 ;


① Allocations : 对象个数 , 一般情况下一个对象只有一个 , 如果出现多个 , 就要考虑是否有内存泄漏问题 ;

② Shallow Size : 对象占用内存大小 ;

③ Retained Set : 对象引用组的内存 ;

【Android 内存优化】Android Profiler 工具常用功能 ( 监测内存 | 内存快照 )_第12张图片


4. 保存内存快照 :点击 Dump Java Heap 按钮后 , 会保存一份内存快照 , 被保存的起始时间和结束时间之间会变成灰色 , 右键点击灰色部分 , 选择 “Export” , 即可将本内存快照保存到文件中 ;

【Android 内存优化】Android Profiler 工具常用功能 ( 监测内存 | 内存快照 )_第13张图片

在弹出的界面中保存到桌面即可 ;

【Android 内存优化】Android Profiler 工具常用功能 ( 监测内存 | 内存快照 )_第14张图片


5. 自动检测 Activity / Fragment 的内存泄漏 : 选中 Activity / Fragment Leaks 复选框 , 该工具会自动分析 Activity / Fragment 的内存泄漏问题 ;

【Android 内存优化】Android Profiler 工具常用功能 ( 监测内存 | 内存快照 )_第15张图片

Activity 中没有内存泄漏 ;
【Android 内存优化】Android Profiler 工具常用功能 ( 监测内存 | 内存快照 )_第16张图片

参考官方文档 : 使用 Memory Profiler 查看 Java 堆和内存分配

更多相关文章

  1. Android内存管理机制之一:lowmemory killer
  2. Android内存泄漏调试
  3. Android开发方便快捷的8个好工具
  4. 【Android 初学者】开发工具介绍:studio
  5. 2014非常好用的开源Android测试工具
  6. Android Studio推荐几个非常有用的工具

随机推荐

  1. Android_Canvas_Bitmap_关系
  2. FireMonkey支持的机型
  3. GridLayout 使用总结
  4. 用gradle 来打包Android
  5. 【Android】Android中 Paint 字体、粗细
  6. Android知识体系总结(全方面覆盖Android知
  7. A-GPS定位与GPS定位的Android简单实现
  8. android 学习笔记1
  9. Android编译环境
  10. 搭建Android java开发环境 eclipse