本文转载自:Android内存泄漏检测及修复

最近在查Android系统上的一个内存泄漏的问题,发现利用Android ADT带的DDMS的Heap功能很好用(需要系统默认开放权限较高才行,否则DDMS无权限列出进程,也便不能查看heap的情况)。
利用此功能可监视任何一个进程的heap使用情况,如果有内存泄漏,那么heap使用量就会一直攀升,且能看出大约是什么类型的数据在泄漏。

后来,利用kill -10 加进程ID号的方式,获取了heapdump(data/misc目录下),此heapdump文件用android的工具hprof-conv转换后,可用MAT工具进行分析,从而找到更详细更准确的信息。(MAT非常强大)

在使用MAT时有一些概念不太明白,比如Shallow size, retained size,下面这篇文章蛮有帮助。

1. 使用Memory Analyzer tool(MAT)分析内存泄漏(一)

2.使用Memory Analyzer tool(MAT)分析内存泄漏(二)

另外,应好好读读MAT自带的帮助文件。

Shallow size就是对象本身占用内存的大小,不包含对其他对象的引用,也就是对象头加成员变量(不是成员变量的值)的总和。

Retained size是该对象自己的shallow size,加上只能从该对象直接或间接访问到对象的shallow size之和。换句话说,retained size是该对象被GC之后所能回收到内存的总和。

要理解GC roots的概念。

dominator_tree + group by class功能也蛮好用的。

Android内存泄漏检测及修复(转载)相关推荐

  1. Android内存泄漏检测工具使用手册

    Android内存泄漏检测工具使用手册 前言 LeakCanary 在Android中接入LeakCanary LeakCanary内存泄漏分析 内存泄漏上报到服务端 Shark Shark分析当前应 ...

  2. Android 内存泄漏检测开源库LeakCanary 研究

    1. Android 内存空间不足会引发的问题 1.1 异常 1.2 卡顿 1.3 从 Java 堆内存超限这个问题开始 2. 内存优化着手点 2.1 检测 RAM usage 2.2 进程 2.3 ...

  3. 基于Android Studio的Android内存泄漏检测方法

    自从Google在2013年发布了Android Studio后,Android Studio凭借着自己良好的内存优化,酷炫的UI主题,强大的自动补全提示以及Gradle的编译支持正逐步取代Eclip ...

  4. Android内存泄漏检测利器:LeakCanary

    2019独角兽企业重金招聘Python工程师标准>>> 是什么? 一言以蔽之:LeakCanary是一个傻瓜化并且可视化的内存泄露分析工具 为什么需要LeakCanary? 因为它简 ...

  5. android内存泄漏检测工具,Android内存泄漏的检测工具——LeakCanary

    首先了解什么是内存泄露html http://liuwangshu.cn/application/performance/ram-3-memory-leak.htmlandroid 1Leakcanc ...

  6. android内存泄漏检测,Android内存泄露检测之LeakCanary的使用

    开始使用 目前为止最新的版本是2.3版本,相比于2.0之前的版本,2.0之后的版本在使用上简洁了很多,只需要在dependencies中加入LeakCanary的依赖即可.而且debugImpleme ...

  7. Android 内存泄漏检测工具

    目前自己认为比较常用的有两个 1.Leakcanary 2.MAT检测 Leakcanary用法: https://github.com/square/leakcanary(官网) 中文说明: htt ...

  8. android 监测内存泄漏工具,LeakCanary:Android内存泄漏检测工具

    LeakCanary A memory leak detection library for Android and Java. "A small leak will sink a grea ...

  9. Android内存泄漏检测工具LeakCanary

    LeakCanary https://github.com/square/leakcanary 引入 dependencies {//https://github.com/square/leakcan ...

最新文章

  1. 十三、“词短情长书不尽,桃花潭水是我心。”(2021.2.12)
  2. centos7 下通过nginx+uwsgi部署django应用
  3. Vuex新手的理解与使用
  4. 避免在ConcurrentHashMap.computeIfAbsent()中进行递归
  5. 产品认知:揭秘你不会画产品信息结构图的本质
  6. QT连接多种数据库f方法及测试
  7. [ZT]firefox实现ie的方法和属性)
  8. 数据驱动创新 融合引领变革 2017中国工业大数据大会·钱塘峰会今日在杭州国际博览中心顺利举行...
  9. M面试题-HTTPS和HTTP的区别
  10. Vue+Electron下Vuex的Dispatch没有效果的解决方案
  11. Linux编译后运行,OpenCV2.3.0编译后运行的问题
  12. 【微信小程序】图片自适应屏幕
  13. 怎么把手机屏幕投射镜像到电脑上面?
  14. [电影]《指环王》新老三部曲完全赏析(双塔)
  15. 国内大厂首次推出Android统一标准--安卓绿色联盟
  16. CEA-861-D infoframe
  17. Linux的ioctl和fcntl
  18. pytorch自带网络_群友原创:万字长文入门 Pytorch 深度学习框架
  19. 卷积神经网络算法流程图,卷积神经网络图怎么画
  20. 使用lifecycle时,1.0.0和1.0.3问题解决方法

热门文章

  1. 内核系统调用openat Hook(Android10)
  2. dism失败 ox800f0818_Win 10 DISM 一直失败,错误: 0x8000ffff - Microsoft Community
  3. 如何在任意文件夹下打开cmd
  4. 实现CSS隐藏滚动条并可以滚动内容
  5. SD Card 驱动流程分析
  6. 怎么增加服务器,服务器如何增加内存?
  7. nrcellcu和nrcelldu_5G网管常用命令——华为版
  8. 运筹说 第69期 | 动态规划经典例题讲解
  9. 2015最流行的Android组件、工具、框架大全 UI框架大全
  10. jQuery实现好评点亮星星