Android内存优化-了解内存篇

查看系统内存

文件

shell@aries:/ $ cat /proc/meminfo
MemTotal:        1970216 kB
MemFree:           83756 kB
Buffers:          156020 kB
Cached:           702516 kB
SwapCached:            0 kB
Active:          1160284 kB
Inactive:         397932 kB
Active(anon):     778932 kB
Inactive(anon):     2228 kB
Active(file):     381352 kB
Inactive(file):   395704 kB
Unevictable:       79176 kB
Mlocked:           74812 kB
HighTotal:       1297404 kB
HighFree:          11192 kB
LowTotal:         672812 kB
LowFree:           72564 kB
SwapTotal:             0 kB
SwapFree:              0 kB
Dirty:                 0 kB
Writeback:             0 kB
AnonPages:        778816 kB
Mapped:           313368 kB
Shmem:              2336 kB
Slab:              87660 kB
SReclaimable:      49088 kB
SUnreclaim:        38572 kB
KernelStack:       13616 kB
PageTables:        28852 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:      985108 kB
Committed_AS:   34864176 kB
VmallocTotal:     245760 kB
VmallocUsed:       95460 kB
VmallocChunk:      69492 kB

命令

shell@aries:/ $ dumpsys meminfo
Applications Memory Usage (kB):
Uptime: 11383438 Realtime: 11576648

Total PSS SWAP by process:
   122031 kB:       0 kB: system (pid 876)
    74706 kB:       0 kB: com.android.systemui (pid 1107)
    68120 kB:       0 kB: com.tencent.mm:push (pid 4553)
    66872 kB:       0 kB: com.sohu.inputmethod.sogou (pid 1393)
    52084 kB:       0 kB: com.miui.home (pid 4724 / activities)
    32189 kB:       0 kB: com.tencent.mobileqq:MSF (pid 2858)
    31242 kB:       0 kB: com.xiaomi.gamecenter (pid 4337)
    29570 kB:       0 kB: android.process.media (pid 1081)
    28265 kB:       0 kB: com.android.phone (pid 1650)
    26193 kB:       0 kB: com.mi.liveassistant (pid 4378)
    25666 kB:       0 kB: com.miui.systemAdSolution (pid 2338)
    22753 kB:       0 kB: com.miui.powerkeeper:service (pid 1345)
    21066 kB:       0 kB: com.miui.securitycenter.remote (pid 1334)
    19893 kB:       0 kB: com.xiaomi.market (pid 17770)
    19694 kB:       0 kB: com.xiaomi.finddevice (pid 1540)
    19625 kB:       0 kB: com.xiaomi.xmsf (pid 1255)
    19192 kB:       0 kB: com.miui.daemon (pid 1621)
    18758 kB:       0 kB: com.miui.whetstone (pid 1526)
    18307 kB:       0 kB: com.android.thememanager (pid 17630)
    17393 kB:       0 kB: com.lbe.security.miui (pid 2136)
    17018 kB:       0 kB: com.miui.analytics (pid 1980)
    16661 kB:       0 kB: com.omottec.demoapp (pid 22772 / activities)
    15325 kB:       0 kB: com.sohu.inputmethod.sogou:push_service (pid 11351)
    14512 kB:       0 kB: com.xiaomi.metoknlp (pid 1444)
    13765 kB:       0 kB: com.xiaomi.gamecenter:migameRemote (pid 4297)
    13664 kB:       0 kB: com.android.settings:remote (pid 1897)
    12461 kB:       0 kB: com.miui.networkassistant.deamon (pid 2634)
    11850 kB:       0 kB: com.sohu.inputmethod.sogou:classic (pid 10650)
    11410 kB:       0 kB: perfd (pid 22753)
    10631 kB:       0 kB: com.miui.hybrid:entrance (pid 4160)
     9767 kB:       0 kB: com.android.settings (pid 22845)
     8963 kB:       0 kB: mediaserver (pid 308)
     8255 kB:       0 kB: com.miui.wmsvc (pid 4022)
     8251 kB:       0 kB: com.miui.cloudservice (pid 3928)
     8068 kB:       0 kB: surfaceflinger (pid 281)
     7704 kB:       0 kB: com.miui.klo.bugreport (pid 2083)
     7696 kB:       0 kB: com.miui.core (pid 1373)
     7525 kB:       0 kB: com.android.deskclock (pid 18052)
     7407 kB:       0 kB: com.xiaomi.simactivate.service (pid 17399)
     7189 kB:       0 kB: com.miui.sysbase (pid 2052)
     7149 kB:       0 kB: com.dolby (pid 1568)
     6701 kB:       0 kB: com.android.server.telecom (pid 1605)
     6676 kB:       0 kB: com.android.incallui (pid 16441)
     6658 kB:       0 kB: zygote (pid 319)
     6485 kB:       0 kB: com.quicinc.cne.CNEService (pid 1668)
     5348 kB:       0 kB: com.miui.systemAdSolution:ui (pid 19809)
     4537 kB:       0 kB: com.xiaomi.providers.appindex (pid 16598)
     4160 kB:       0 kB: com.android.mms.service (pid 1515)
     3882 kB:       0 kB: rild (pid 306)
     3847 kB:       0 kB: com.xiaomi.mitunes (pid 1631)
     3796 kB:       0 kB: sdcard (pid 346)
     3771 kB:       0 kB: com.android.smspush (pid 2114)
     3139 kB:       0 kB: mm-qcamera-daemon (pid 287)
     3119 kB:       0 kB: shelld (pid 320)
     1660 kB:       0 kB: wpa_supplicant (pid 1178)
     1489 kB:       0 kB: mcd (pid 2675)
     1487 kB:       0 kB: netd (pid 304)
     1322 kB:       0 kB: drmserver (pid 307)
     1086 kB:       0 kB: ks (pid 940)
     1068 kB:       0 kB: lowi-server (pid 360)
      961 kB:       0 kB: vold (pid 280)
      907 kB:       0 kB: thermald (pid 2763)
      885 kB:       0 kB: xtwifi-inet-agent (pid 361)
      807 kB:       0 kB: logd (pid 276)
      798 kB:       0 kB: sensors.qcom (pid 531)
      776 kB:       0 kB: cnd (pid 326)
      756 kB:       0 kB: /init (pid 1)
      726 kB:       0 kB: netmgrd (pid 487)
      698 kB:       0 kB: qmuxd (pid 486)
      670 kB:       0 kB: keystore (pid 311)
      658 kB:       0 kB: zygote (pid 324)
      644 kB:       0 kB: mdbd (pid 364)
      600 kB:       0 kB: adbd (pid 355)
      594 kB:       0 kB: time_daemon (pid 344)
      588 kB:       0 kB: ATFWD-daemon (pid 19848)
      524 kB:       0 kB: ueventd (pid 156)
      515 kB:       0 kB: otad (pid 312)
      493 kB:       0 kB: fdpp (pid 322)
      468 kB:       0 kB: mpdecision (pid 2768)
      442 kB:       0 kB: installd (pid 309)
      412 kB:       0 kB: dhcpcd (pid 9815)
      389 kB:       0 kB: logcat (pid 22734)
      387 kB:       0 kB: namespaceCreateSvc (pid 325)
      384 kB:       0 kB: sh (pid 22965)
      375 kB:       0 kB: lmkd (pid 278)
      372 kB:       0 kB: location-mq (pid 359)
      371 kB:       0 kB: dumpsys (pid 23128)
      368 kB:       0 kB: sh (pid 9553)
      364 kB:       0 kB: qseecomd (pid 370)
      363 kB:       0 kB: servicemanager (pid 279)
      352 kB:       0 kB: sh (pid 22751)
      346 kB:       0 kB: loc_launcher (pid 328)
      345 kB:       0 kB: qcks (pid 303)
      336 kB:       0 kB: healthd (pid 277)
      334 kB:       0 kB: ssr_diag (pid 342)
      304 kB:       0 kB: debuggerd (pid 305)
      301 kB:       0 kB: wcnss_service (pid 345)
      297 kB:       0 kB: efsks (pid 900)
      223 kB:       0 kB: qseecomd (pid 343)
      155 kB:       0 kB: su (pid 9548)
      153 kB:       0 kB: su (pid 321)
      144 kB:       0 kB: su (pid 9551)
        0 kB:       0 kB: dumpsys (pid 23156)

Total PSS SWAP by OOM adjustment:
    77732 kB:       0 kB: Native
               11410 kB:       0 kB: perfd (pid 22753)
                8963 kB:       0 kB: mediaserver (pid 308)
                8068 kB:       0 kB: surfaceflinger (pid 281)
                6658 kB:       0 kB: zygote (pid 319)
                3882 kB:       0 kB: rild (pid 306)
                3796 kB:       0 kB: sdcard (pid 346)
                3139 kB:       0 kB: mm-qcamera-daemon (pid 287)
                3119 kB:       0 kB: shelld (pid 320)
                1660 kB:       0 kB: wpa_supplicant (pid 1178)
                1489 kB:       0 kB: mcd (pid 2675)
                1487 kB:       0 kB: netd (pid 304)
                1322 kB:       0 kB: drmserver (pid 307)
                1086 kB:       0 kB: ks (pid 940)
                1068 kB:       0 kB: lowi-server (pid 360)
                 961 kB:       0 kB: vold (pid 280)
                 907 kB:       0 kB: thermald (pid 2763)
                 885 kB:       0 kB: xtwifi-inet-agent (pid 361)
                 807 kB:       0 kB: logd (pid 276)
                 798 kB:       0 kB: sensors.qcom (pid 531)
                 776 kB:       0 kB: cnd (pid 326)
                 756 kB:       0 kB: /init (pid 1)
                 726 kB:       0 kB: netmgrd (pid 487)
                 698 kB:       0 kB: qmuxd (pid 486)
                 670 kB:       0 kB: keystore (pid 311)
                 658 kB:       0 kB: zygote (pid 324)
                 644 kB:       0 kB: mdbd (pid 364)
                 600 kB:       0 kB: adbd (pid 355)
                 594 kB:       0 kB: time_daemon (pid 344)
                 588 kB:       0 kB: ATFWD-daemon (pid 19848)
                 524 kB:       0 kB: ueventd (pid 156)
                 515 kB:       0 kB: otad (pid 312)
                 493 kB:       0 kB: fdpp (pid 322)
                 468 kB:       0 kB: mpdecision (pid 2768)
                 442 kB:       0 kB: installd (pid 309)
                 412 kB:       0 kB: dhcpcd (pid 9815)
                 389 kB:       0 kB: logcat (pid 22734)
                 387 kB:       0 kB: namespaceCreateSvc (pid 325)
                 384 kB:       0 kB: sh (pid 22965)
                 375 kB:       0 kB: lmkd (pid 278)
                 372 kB:       0 kB: location-mq (pid 359)
                 371 kB:       0 kB: dumpsys (pid 23128)
                 368 kB:       0 kB: sh (pid 9553)
                 364 kB:       0 kB: qseecomd (pid 370)
                 363 kB:       0 kB: servicemanager (pid 279)
                 352 kB:       0 kB: sh (pid 22751)
                 346 kB:       0 kB: loc_launcher (pid 328)
                 345 kB:       0 kB: qcks (pid 303)
                 336 kB:       0 kB: healthd (pid 277)
                 334 kB:       0 kB: ssr_diag (pid 342)
                 304 kB:       0 kB: debuggerd (pid 305)
                 301 kB:       0 kB: wcnss_service (pid 345)
                 297 kB:       0 kB: efsks (pid 900)
                 223 kB:       0 kB: qseecomd (pid 343)
                 155 kB:       0 kB: su (pid 9548)
                 153 kB:       0 kB: su (pid 321)
                 144 kB:       0 kB: su (pid 9551)
                   0 kB:       0 kB: dumpsys (pid 23156)
   326453 kB:       0 kB: Persistent
              122031 kB:       0 kB: system (pid 876)
               74706 kB:       0 kB: com.android.systemui (pid 1107)
               28265 kB:       0 kB: com.android.phone (pid 1650)
               19694 kB:       0 kB: com.xiaomi.finddevice (pid 1540)
               19625 kB:       0 kB: com.xiaomi.xmsf (pid 1255)
               19192 kB:       0 kB: com.miui.daemon (pid 1621)
               18758 kB:       0 kB: com.miui.whetstone (pid 1526)
                7149 kB:       0 kB: com.dolby (pid 1568)
                6701 kB:       0 kB: com.android.server.telecom (pid 1605)
                6485 kB:       0 kB: com.quicinc.cne.CNEService (pid 1668)
                3847 kB:       0 kB: com.xiaomi.mitunes (pid 1631)
    72941 kB:       0 kB: Foreground
               22753 kB:       0 kB: com.miui.powerkeeper:service (pid 1345)
               21066 kB:       0 kB: com.miui.securitycenter.remote (pid 1334)
               16661 kB:       0 kB: com.omottec.demoapp (pid 22772 / activities)
               12461 kB:       0 kB: com.miui.networkassistant.deamon (pid 2634)
    91202 kB:       0 kB: Visible
               25666 kB:       0 kB: com.miui.systemAdSolution (pid 2338)
               17018 kB:       0 kB: com.miui.analytics (pid 1980)
               14512 kB:       0 kB: com.xiaomi.metoknlp (pid 1444)
               10631 kB:       0 kB: com.miui.hybrid:entrance (pid 4160)
                8255 kB:       0 kB: com.miui.wmsvc (pid 4022)
                7189 kB:       0 kB: com.miui.sysbase (pid 2052)
                4160 kB:       0 kB: com.android.mms.service (pid 1515)
                3771 kB:       0 kB: com.android.smspush (pid 2114)
   136349 kB:       0 kB: Perceptible
               66872 kB:       0 kB: com.sohu.inputmethod.sogou (pid 1393)
               52084 kB:       0 kB: com.miui.home (pid 4724 / activities)
               17393 kB:       0 kB: com.lbe.security.miui (pid 2136)
    37266 kB:       0 kB: A Services
               29570 kB:       0 kB: android.process.media (pid 1081)
                7696 kB:       0 kB: com.miui.core (pid 1373)
   220417 kB:       0 kB: B Services
               68120 kB:       0 kB: com.tencent.mm:push (pid 4553)
               32189 kB:       0 kB: com.tencent.mobileqq:MSF (pid 2858)
               31242 kB:       0 kB: com.xiaomi.gamecenter (pid 4337)
               18307 kB:       0 kB: com.android.thememanager (pid 17630)
               15325 kB:       0 kB: com.sohu.inputmethod.sogou:push_service (pid 11351)
               13765 kB:       0 kB: com.xiaomi.gamecenter:migameRemote (pid 4297)
               13664 kB:       0 kB: com.android.settings:remote (pid 1897)
               11850 kB:       0 kB: com.sohu.inputmethod.sogou:classic (pid 10650)
                8251 kB:       0 kB: com.miui.cloudservice (pid 3928)
                7704 kB:       0 kB: com.miui.klo.bugreport (pid 2083)
    87346 kB:       0 kB: Cached
               26193 kB:       0 kB: com.mi.liveassistant (pid 4378)
               19893 kB:       0 kB: com.xiaomi.market (pid 17770)
                9767 kB:       0 kB: com.android.settings (pid 22845)
                7525 kB:       0 kB: com.android.deskclock (pid 18052)
                7407 kB:       0 kB: com.xiaomi.simactivate.service (pid 17399)
                6676 kB:       0 kB: com.android.incallui (pid 16441)
                5348 kB:       0 kB: com.miui.systemAdSolution:ui (pid 19809)
                4537 kB:       0 kB: com.xiaomi.providers.appindex (pid 16598)

Total PSS by category:
   358206 kB: Unknown
   272790 kB: Dalvik
   137434 kB: .dex mmap
    78718 kB: code mmap
    60073 kB: image mmap
    55213 kB: .so mmap
    29328 kB: Dalvik Other
    22307 kB: Other dev
    11759 kB: .apk mmap
    11507 kB: Other mmap
    10670 kB: Stack
     1351 kB: .ttf mmap
      236 kB: Ashmem
       52 kB: Cursor
       38 kB: .jar mmap
       24 kB: Native
        0 kB: Graphics
        0 kB: GL
        0 kB: Memtrack

Total RAM: 1970216 kB (status moderate)
 Free RAM: 933098 kB (87346 cached pss + 696288 cached + 149464 free)
 Used RAM: 1198660 kB (962360 used pss + 146524 buffers + 2336 shmem + 87440 slab)
 Lost RAM: -161542 kB
   Tuning: 96 (large 256), oom 122880 kB, restore limit 40960 kB (high-end-gfx)

API

系统内存-API

监控

系统内存-监控-ComponentCallbacks

系统内存-监控-ComponentCallbacks2

查看进程内存

命令

shell@aries:/ $ dumpsys meminfo com.omottec.demoapp
Applications Memory Usage (kB):
Uptime: 10755982 Realtime: 10949191

** MEMINFO in pid 17704 [com.omottec.demoapp] **
                   Pss  Private  Private  Swapped     Heap     Heap     Heap
                 Total    Dirty    Clean    Dirty     Size    Alloc     Free
                ------   ------   ------   ------   ------   ------   ------
  Native Heap        0        0        0        0    11659    11659    15988
  Dalvik Heap     2552     2408        0        0    10539     7936     2603
 Dalvik Other      388      388        0        0
        Stack      144      144        0        0
       Ashmem        2        0        0        0
    Other dev      881      872        8        0
     .so mmap      880      340       48        0
    .apk mmap       87        0       12        0
    .ttf mmap       10        0        0        0
    .dex mmap     4452        0     4448        0
    code mmap      778        0        0        0
   image mmap     1321     1060       24        0
   Other mmap       58        4        4        0
      Unknown     4808     4704        0        0
        TOTAL    16361     9920     4544        0    22198    19595    18591

 Objects
               Views:        8         ViewRootImpl:        1
         AppContexts:        3           Activities:        1
              Assets:        5        AssetManagers:        5
       Local Binders:        9        Proxy Binders:       17
    Death Recipients:        1
     OpenSSL Sockets:        0

 SQL
         MEMORY_USED:        0
  PAGECACHE_OVERFLOW:        0          MALLOC_SIZE:        0


 Asset Allocations
    zip:/system/framework/framework-res.apk:/resources.arsc: 1349K
    zip:/system/app/miui/miui.apk:/resources.arsc: 308K
    zip:/system/app/miuisystem/miuisystem.apk:/resources.arsc: 47K
    zip:/system/framework/framework-ext-res/framework-ext-res.apk:/resources.arsc: 99K

API

进程内存-API.png

重要的列

Private Clean
从某个持久性文件(例如正在执行的代码)映射的RAM页,如果一段时间不用,可以移出分页。

Private Dirty
开销最大,被进程独占,已被修改而必须保持在RAM中的RAM 页,Native堆分配和Dalvik堆分配都是private dirty RAM。

PSS(Proportional Set Size)
所有的应用进程都fork自zygote进程,zygote进程启动时会加载公共的类和资源,应用进程通过Binder机制与Zygote进程通信,这样可以达到共享内存的效果,所以一个进程占用的实际内存是自身独占的内存加按比例占用的共享内,系统设置里面对进程占用内存的统计就是取的这个值。

Private RAM

Memory Profiler顶部显示的就是Private RAM


PrivateRAM

Java:Java 或 Kotlin 代码分配的内存。
Native:native层的 so 中调用malloc或new创建的内存。
Graphics: GL 表面、GL 纹理等使用的内存。
Stack:线程栈。
Code:dex 字节码、so 库和字体占用的内存。

重要的行

Dalvik Heap
Java Heap,开发中打交道最多

.so mmap 和 .dex mmap
.so和.dex代码映射到内存后占用的 RAM

TOTAL
进程总的内存占用

Dalvik Heap

命令

shell@aries:/ $ getprop | grep 'dalvik'
[dalvik.vm.dex2oat-Xms]: [64m]
[dalvik.vm.dex2oat-Xmx]: [512m]
[dalvik.vm.heapgrowthlimit]: [96m]
[dalvik.vm.heapmaxfree]: [8m]
[dalvik.vm.heapminfree]: [2m]
[dalvik.vm.heapsize]: [256m]
[dalvik.vm.heapstartsize]: [8m]
[dalvik.vm.heaptargetutilization]: [0.75]
[dalvik.vm.image-dex2oat-Xms]: [64m]
[dalvik.vm.image-dex2oat-Xmx]: [64m]
[dalvik.vm.isa.arm.features]: [div]
[dalvik.vm.stack-trace-file]: [/data/anr/traces.txt]
[persist.sys.dalvik.vm.lib.2]: [libart.so]
[ro.dalvik.vm.native.bridge]: [0]

API

DalvikHeap-API-ActivityManager

DalvikHeap-API-Runtime

总结

内存-总结
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,684评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,143评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,214评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,788评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,796评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,665评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,027评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,679评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,346评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,664评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,766评论 1 331
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,412评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,015评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,974评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,073评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,501评论 2 343

推荐阅读更多精彩内容