Android 分析内存情况

本贴最后更新于 2321 天前,其中的信息可能已经沧海桑田

首先都要先通过 adb 连接到安卓设备,adb shell 进入系统

方法一:procrank 命令

PID Vss Rss Pss Uss cmdline 955 807836K 57864K 36529K 33872K com.gitvdemo.video 606 691244K 43668K 26172K 25188K com.android.systemui 435 774656K 47488K 24661K 21728K system_server 12484 735784K 42804K 21658K 19704K com.xhc.xhcsmarthomemetv 1448 702640K 31748K 12624K 11764K com.lz.smart.music 92 680604K 42212K 12601K 6640K zygote 1243 749056K 33024K 12277K 10452K com.iflytek.xiri 4900 711984K 28460K 9254K 7952K com.xhc.gateway 94 58968K 12816K 7823K 4948K /system/bin/mediaserver 620 707292K 27180K 7734K 6400K com.android.inputmethod.latin 1362 790960K 24460K 6870K 6112K com.xhc.comm 633 709560K 25292K 6542K 5384K com.android.phone 925 705876K 26740K 6223K 4856K com.dangbeimarket:bdservice_v1 1713 701716K 25672K 6049K 4624K com.dangbeimarket 647 699276K 24096K 5927K 5148K xhc.smarthome.business 776 693756K 24180K 5808K 4888K android.process.media 1021 700848K 22992K 5596K 4828K com.xiaobaifile.tv 713 693608K 23452K 5481K 4660K android.process.acore 1197 704732K 24352K 4982K 2272K .pushdaemonservice 1865 707024K 24956K 4863K 3464K com.dangbeimarket:appuninstallMonitor 1746 700580K 24084K 4471K 3224K com.dangbeimarket:dangbei_web 939 702048K 19916K 3784K 3148K com.me.mediaplay

执行完命令之后,系统会打印上面的这些信息

PID :表示进程 id 号
VSS - Virtual Set Size 虚拟耗用内存(包含共享库占用的内存)是单个进程全部可访问的地址空间
RSS - Resident Set Size 实际使用物理内存(包含共享库占用的内存)是单个进程实际占用的内存大小,对于单个共享库, 尽管无论多少个进程使用,实际该共享库只会被装入内存一次。
PSS - Proportional Set Size 实际使用的物理内存(比例分配共享库占用的内存)
USS - Unique Set Size 进程独自占用的物理内存(不包含共享库占用的内存)USS 是一个非常非常有用的数字, 因为它揭示了运行一个特定进程的真实的内存增量大小。如果进程被终止, USS 就是实际被返还给系统的内存大小。
USS 是针对某个进程开始有可疑内存泄露的情况,进行检测的最佳数字。怀疑某个程序有内存泄露可以查看这个值是否一直有增加

方法二:dumpsys meminfo 命令

root@rksdknew:/ # dumpsys meminfo dumpsys meminfo Applications Memory Usage (kB): Uptime: 11090780 Realtime: 11090767 Total PSS by process: 36454 kB: com.gitvdemo.video (pid 955) 26061 kB: com.android.systemui (pid 606) 24545 kB: system (pid 435) 21550 kB: com.xhc.xhcsmarthomemetv (pid 12484 / activities) 12522 kB: com.lz.smart.music (pid 1448) 12453 kB: zygote (pid 92) 12158 kB: com.iflytek.xiri (pid 1243) 9187 kB: com.xhc.gateway (pid 4900) 7798 kB: mediaserver (pid 94) 7617 kB: com.android.inputmethod.latin (pid 620) 6793 kB: com.xhc.comm (pid 1362) 6439 kB: com.android.phone (pid 633) 6120 kB: com.dangbeimarket:bdservice_v1 (pid 925) 5942 kB: com.dangbeimarket (pid 1713) 5827 kB: xhc.smarthome.business (pid 647) 5702 kB: android.process.media (pid 776) 5511 kB: com.xiaobaifile.tv (pid 1021) 5375 kB: android.process.acore (pid 713) 4881 kB: .pushdaemonservice (pid 1197) 4741 kB: com.dangbeimarket:appuninstallMonitor (pid 1865) 4415 kB: com.dangbeimarket:dangbei_web (pid 1746) Total PSS by OOM adjustment: 37085 kB: Native 12453 kB: zygote (pid 92) 7798 kB: mediaserver (pid 94) 2193 kB: .pushdaemonservice (pid 1218) 2179 kB: drmserver (pid 93) 1647 kB: smbd (pid 1925) 1435 kB: surfaceflinger (pid 91) 1339 kB: nmbd (pid 1930) 979 kB: wpa_supplicant (pid 921) 770 kB: netd (pid 88) 597 kB: vold (pid 86) 527 kB: smbd (pid 1927) 441 kB: /init (pid 1) 433 kB: keystore (pid 96) 430 kB: rild (pid 90) 355 kB: uSDKServer_2.0.0_2014051415 (pid 1482) 336 kB: xirisvc2.3.0 (pid 98) 299 kB: displayd (pid 87) 276 kB: adbd (pid 105) 275 kB: adb (pid 14894) 248 kB: ueventd (pid 60) 236 kB: dhcpcd (pid 1059) 24545 kB: System 24545 kB: system (pid 435) 43293 kB: Persistent 26061 kB: com.android.systemui (pid 606) 6439 kB: com.android.phone (pid 633) 5827 kB: xhc.smarthome.business (pid 647) 3251 kB: com.iflytek.xiri2.system (pid 659) 1715 kB: com.iflytek.showcomesettings (pid 666) 21550 kB: Foreground 21550 kB: com.xhc.xhcsmarthomemetv (pid 12484 / activities) 1637 kB: Visible 1637 kB: com.android.smspush (pid 732) 26394 kB: Perceptible 7617 kB: com.android.inputmethod.latin (pid 620) 6793 kB: com.xhc.comm (pid 1362) 5511 kB: com.xiaobaifile.tv (pid 1021) 4741 kB: com.dangbeimarket:appuninstallMonitor (pid 1865) 1732 kB: com.ehome.mp (pid 1378) 6120 kB: A Services 6120 kB: com.dangbeimarket:bdservice_v1 (pid 925) 97301 kB: B Services 36454 kB: com.gitvdemo.video (pid 955) 12522 kB: com.lz.smart.music (pid 1448) 12158 kB: com.iflytek.xiri (pid 1243) 9187 kB: com.xhc.gateway (pid 4900) 5942 kB: com.dangbeimarket (pid 1713) 4881 kB: .pushdaemonservice (pid 1197) 4415 kB: com.dangbeimarket:dangbei_web (pid 1746) 3682 kB: com.me.mediaplay (pid 939) 2866 kB: android.rockchip.update.service (pid 843) 2637 kB: android:userExpericenceService (pid 1511) 2557 kB: com.dangbeimarket:MonitorService (pid 1780) 28861 kB: Cached 5702 kB: android.process.media (pid 776) 5375 kB: android.process.acore (pid 713) 3535 kB: com.android.gallery3d (pid 12071) 3443 kB: com.android.deskclock (pid 1649) 3287 kB: com.android.launcher3 (pid 12104) 2082 kB: com.android.keychain (pid 12089) 1941 kB: com.android.musicfx (pid 12056) 1759 kB: com.bc.InitApp (pid 881) 1737 kB: com.svox.pico (pid 12500) Total PSS by category: 87196 kB: Dalvik 59666 kB: .so mmap 41691 kB: .dex mmap 39804 kB: Dalvik Other 38077 kB: Unknown 8012 kB: .apk mmap 7235 kB: Other mmap 2268 kB: Native 1356 kB: .ttf mmap 964 kB: Stack 273 kB: Other dev 156 kB: .jar mmap 84 kB: Ashmem 4 kB: Cursor 0 kB: code mmap 0 kB: image mmap 0 kB: Graphics 0 kB: GL 0 kB: Memtrack Total RAM: 1048576 kB Free RAM: 575109 kB (28861 cached pss + 271964 cached + 274284 free) Used RAM: 293193 kB (257925 used pss + 12784 buffers + 284 shmem + 22200 slab) Lost RAM: 180274 kB Tuning: 64 (large 384), oom 122880 kB, restore limit 40960 kB (high-end-gfx)

打印出以上信息

如果需要查看某个进程的内存情况,可以加入程序的包名或者是进程 id 号
dumpsys meminfo com.xhc.xhcsmarthomemetv

root@rksdknew:/ # dumpsys meminfo com.xhc.xhcsmarthomemetv dumpsys meminfo com.xhc.xhcsmarthomemetv Applications Memory Usage (kB): Uptime: 11432837 Realtime: 11432824 ** MEMINFO in pid 12484 [com.xhc.xhcsmarthomemetv] ** Pss Private Private Swapped Heap Heap Heap Total Dirty Clean Dirty Size Alloc Free ------ ------ ------ ------ ------ ------ ------ Native Heap 0 0 0 0 10644 3886 265 Dalvik Heap 12523 12468 0 0 14436 11891 2545 Dalvik Other 1785 1676 0 0 Stack 20 20 0 0 Other dev 4 0 4 0 .so mmap 1347 584 164 0 .apk mmap 193 0 0 0 .ttf mmap 603 0 332 0 .dex mmap 2391 16 1828 0 Other mmap 53 8 0 0 Unknown 2635 2628 0 0 TOTAL 21554 17400 2328 0 25080 15777 2810 Objects Views: 158 ViewRootImpl: 1 AppContexts: 4 Activities: 1 Assets: 2 AssetManagers: 2 Local Binders: 11 Proxy Binders: 15 Death Recipients: 0 OpenSSL Sockets: 0 SQL MEMORY_USED: 0 PAGECACHE_OVERFLOW: 0 MALLOC_SIZE: 0 Asset Allocations zip:/system/app/EHOMETV.apk:/resources.arsc: 250K

这个进程的内存信息就会全部打印出来

如果通过 dumpsys meminfo + 进程 id

那就需要先获取进程的 id
通过 ps 命令查看所有进程的 id
打印出来的 PID 就是进程的 id 号

安卓系统开发中,或许会出现多个应用程序协同合作的情况,出了问题,莫名系统卡死,很有可能就是某个程序出现一直占用内存不释放,
越用越多,最后导致系统自动杀死等级低的应用程序,比如软键盘,或者其他的开发程序,用来释放内存

如果出现这个情况,就可以通过以上方式,查看哪个应用程序的内存越来越大,然后找到问题。

  • Android

    Android 是一种以 Linux 为基础的开放源码操作系统,主要使用于便携设备。2005 年由 Google 收购注资,并拉拢多家制造商组成开放手机联盟开发改良,逐渐扩展到到平板电脑及其他领域上。

    335 引用 • 324 回帖 • 1 关注

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...

推荐标签 标签

  • ZooKeeper

    ZooKeeper 是一个分布式的,开放源码的分布式应用程序协调服务,是 Google 的 Chubby 一个开源的实现,是 Hadoop 和 HBase 的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。

    59 引用 • 29 回帖 • 5 关注
  • Q&A

    提问之前请先看《提问的智慧》,好的问题比好的答案更有价值。

    9464 引用 • 43140 回帖 • 108 关注
  • Python

    Python 是一种面向对象、直译式电脑编程语言,具有近二十年的发展历史,成熟且稳定。它包含了一组完善而且容易理解的标准库,能够轻松完成很多常见的任务。它的语法简捷和清晰,尽量使用无异义的英语单词,与其它大多数程序设计语言使用大括号不一样,它使用缩进来定义语句块。

    556 引用 • 675 回帖
  • 游戏

    沉迷游戏伤身,强撸灰飞烟灭。

    180 引用 • 821 回帖 • 1 关注
  • 数据库

    据说 99% 的性能瓶颈都在数据库。

    345 引用 • 742 回帖
  • 自由行
    2 关注
  • Flume

    Flume 是一套分布式的、可靠的,可用于有效地收集、聚合和搬运大量日志数据的服务架构。

    9 引用 • 6 回帖 • 652 关注
  • Mac

    Mac 是苹果公司自 1984 年起以“Macintosh”开始开发的个人消费型计算机,如:iMac、Mac mini、Macbook Air、Macbook Pro、Macbook、Mac Pro 等计算机。

    168 引用 • 595 回帖
  • 倾城之链
    23 引用 • 66 回帖 • 161 关注
  • LeetCode

    LeetCode(力扣)是一个全球极客挚爱的高质量技术成长平台,想要学习和提升专业能力从这里开始,充足技术干货等你来啃,轻松拿下 Dream Offer!

    209 引用 • 72 回帖
  • GitBook

    GitBook 使您的团队可以轻松编写和维护高质量的文档。 分享知识,提高团队的工作效率,让用户满意。

    3 引用 • 8 回帖
  • Solidity

    Solidity 是一种智能合约高级语言,运行在 [以太坊] 虚拟机(EVM)之上。它的语法接近于 JavaScript,是一种面向对象的语言。

    3 引用 • 18 回帖 • 434 关注
  • NGINX

    NGINX 是一个高性能的 HTTP 和反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器。 NGINX 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,第一个公开版本 0.1.0 发布于 2004 年 10 月 4 日。

    315 引用 • 547 回帖 • 1 关注
  • 30Seconds

    📙 前端知识精选集,包含 HTML、CSS、JavaScript、React、Node、安全等方面,每天仅需 30 秒。

    • 精选常见面试题,帮助您准备下一次面试
    • 精选常见交互,帮助您拥有简洁酷炫的站点
    • 精选有用的 React 片段,帮助你获取最佳实践
    • 精选常见代码集,帮助您提高打码效率
    • 整理前端界的最新资讯,邀您一同探索新世界
    488 引用 • 384 回帖 • 6 关注
  • Word
    13 引用 • 40 回帖
  • Postman

    Postman 是一款简单好用的 HTTP API 调试工具。

    4 引用 • 3 回帖
  • 深度学习

    深度学习(Deep Learning)是机器学习的分支,是一种试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法。

    53 引用 • 40 回帖
  • B3log

    B3log 是一个开源组织,名字来源于“Bulletin Board Blog”缩写,目标是将独立博客与论坛结合,形成一种新的网络社区体验,详细请看 B3log 构思。目前 B3log 已经开源了多款产品:SymSoloVditor思源笔记

    1063 引用 • 3455 回帖 • 164 关注
  • Vditor

    Vditor 是一款浏览器端的 Markdown 编辑器,支持所见即所得、即时渲染(类似 Typora)和分屏预览模式。它使用 TypeScript 实现,支持原生 JavaScript、Vue、React 和 Angular。

    366 引用 • 1842 回帖 • 2 关注
  • iOS

    iOS 是由苹果公司开发的移动操作系统,最早于 2007 年 1 月 9 日的 Macworld 大会上公布这个系统,最初是设计给 iPhone 使用的,后来陆续套用到 iPod touch、iPad 以及 Apple TV 等产品上。iOS 与苹果的 Mac OS X 操作系统一样,属于类 Unix 的商业操作系统。

    88 引用 • 139 回帖 • 1 关注
  • 996
    13 引用 • 200 回帖 • 6 关注
  • Eclipse

    Eclipse 是一个开放源代码的、基于 Java 的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。

    76 引用 • 258 回帖 • 630 关注
  • SQLite

    SQLite 是一个进程内的库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。SQLite 是全世界使用最为广泛的数据库引擎。

    5 引用 • 7 回帖
  • ZeroNet

    ZeroNet 是一个基于比特币加密技术和 BT 网络技术的去中心化的、开放开源的网络和交流系统。

    1 引用 • 21 回帖 • 641 关注
  • 架构

    我们平时所说的“架构”主要是指软件架构,这是有关软件整体结构与组件的抽象描述,用于指导软件系统各个方面的设计。另外还有“业务架构”、“网络架构”、“硬件架构”等细分领域。

    143 引用 • 442 回帖
  • IDEA

    IDEA 全称 IntelliJ IDEA,是一款 Java 语言开发的集成环境,在业界被公认为最好的 Java 开发工具之一。IDEA 是 JetBrains 公司的产品,这家公司总部位于捷克共和国的首都布拉格,开发人员以严谨著称的东欧程序员为主。

    181 引用 • 400 回帖 • 2 关注
  • OpenCV
    15 引用 • 36 回帖 • 1 关注