当前位置: 首页 > 编程笔记 >

Android系统检测程序内存占用各种方法

史阳晖
2023-03-14
本文向大家介绍Android系统检测程序内存占用各种方法,包括了Android系统检测程序内存占用各种方法的使用技巧和注意事项,需要的朋友参考一下

1.检查系统总内存


liuhx@uc ~ $ adb shell cat /proc/meminfo

MemTotal:         840868 kB

MemFree:          457344 kB

Buffers:            1744 kB

Cached:           203064 kB

SwapCached:            0 kB

Active:           234932 kB

Inactive:         129644 kB

Active(anon):     170292 kB

Inactive(anon):        0 kB

Active(file):      64640 kB

Inactive(file):   129644 kB

Unevictable:           0 kB

Mlocked:               0 kB

SwapTotal:             0 kB

SwapFree:              0 kB

Dirty:                 0 kB

Writeback:             0 kB

AnonPages:        159820 kB

Mapped:            97916 kB

Slab:               7808 kB

SReclaimable:       2920 kB

SUnreclaim:         4888 kB

PageTables:         3516 kB

NFS_Unstable:          0 kB

Bounce:                0 kB

WritebackTmp:          0 kB

CommitLimit:      420432 kB

Committed_AS:    1295272 kB

VmallocTotal:     122880 kB

VmallocUsed:       16508 kB

VmallocChunk:      76804 kB

第一行MemTotal就是总内存。一般并不会等于手机标榜的数值。说是2G内存的手机,会在1.8G左右

2.检查某个程序的各类型内存占用

可用dumpsys meminfo 包名。不知道包名的话,可以用ps命令得到所有运行的程序,也包括得到pid。以自带的浏览器为例:


liuhx@uc ~ $ adb shell dumpsys meminfo com.android.browser

Applications Memory Usage (kB):

Uptime: 23140065 Realtime: 23140065

** MEMINFO in pid 939 [com.android.browser] **                          Shared  Private     Heap     Heap     Heap                    Pss    Dirty    Dirty     Size    Alloc     Free                 ------   ------   ------   ------   ------   ------        Native     7111      748     7048     8964     8634      329        Dalvik     7338     5096     6892     7568     7041      527        Cursor        0        0        0                                  Ashmem      276        0      276                               Other dev        4        0        0                                .so mmap     5050     1728      252                               .jar mmap        0        0        0                               .apk mmap      418        0        0                               .ttf mmap      439        0        0                               .dex mmap        0        0        0                              Other mmap     2320       16       24                                 Unknown     5173       12     5172                                   TOTAL    28129     7600    19664    16532    15675      856    Objects                Views:      104         ViewRootImpl:        1          AppContexts:        4           Activities:        1               Assets:        2        AssetManagers:        2        Local Binders:       15        Proxy Binders:       19     Death Recipients:        0      OpenSSL Sockets:        0    SQL          MEMORY_USED:     1468   PAGECACHE_OVERFLOW:      899          MALLOC_SIZE:      168    DATABASES       pgsz     dbsz   Lookaside(b)          cache  Dbname          4     1180             68        54/55/9  /data/data/com.android.browser/databases/browser2.db          4     1180             25         1/60/2  /data/data/com.android.browser/databases/browser2.db (2)          4     1180             65        90/23/7  /data/data/com.android.browser/databases/browser2.db (1)          4       40             18         0/15/1  /data/data/com.android.browser/databases/webview.db    Asset Allocations     zip:/system/app/Browser.apk:/resources.arsc: 881K

dumpsys的输出结果在不同版本的android系统可能不同。

其中Pss Total是程序占用的PSS。

3.检查程序状态


liuhx@uc ~ $ adb shell cat /proc/939/status

Name: android.browser

State: S (sleeping)

Tgid: 939

Pid: 939

PPid: 38

TracerPid: 0

Uid: 10013 10013 10013 10013

Gid: 10013 10013 10013 10013

FDSize: 256

Groups: 1015 1028 3003 50013 

VmPeak:   215504 kB

VmSize:   206780 kB

VmLck:        0 kB

VmHWM:    52108 kB

VmRSS:    47748 kB

VmData:    53616 kB

VmStk:       84 kB

VmExe:        8 kB

VmLib:    29300 kB

VmPTE:      156 kB

Threads: 29

SigQ: 0/6656

SigPnd: 0000000000000000

ShdPnd: 0000000000000000

SigBlk: 0000000000001204

SigIgn: 0000000000000000

SigCgt: 00000002000094e8

CapInh: 0000000000000000

CapPrm: 0000000000000000

CapEff: 0000000000000000

CapBnd: fffffffffffffeff

voluntary_ctxt_switches: 451

nonvoluntary_ctxt_switches: 3563

VmRss是程序占用的RSS

4.检查程序各部分的内存占用。


cat /proc/939/smaps


这个命令的输出结果很长,下面是一部分结果:

4b399000-4b39b000 r--p 0001d000 1f:00 560        /system/lib/libGLESv1_enc.so

Size:                  8 kB

Rss:                   8 kB

Pss:                   8 kB

Shared_Clean:          0 kB

Shared_Dirty:          0 kB

Private_Clean:         0 kB

Private_Dirty:         8 kB

Referenced:            8 kB

Swap:                  0 kB

KernelPageSize:        4 kB

MMUPageSize:           4 kB

4b39b000-4b39c000 rw-p 0001f000 1f:00 560        /system/lib/libGLESv1_enc.so

Size:                  4 kB

Rss:                   4 kB

Pss:                   4 kB

Shared_Clean:          0 kB

Shared_Dirty:          0 kB

Private_Clean:         0 kB

Private_Dirty:         4 kB

Referenced:            4 kB

Swap:                  0 kB

KernelPageSize:        4 kB

MMUPageSize:           4 kB

 类似资料:
  • 本文向大家介绍C# WinForm应用程序降低系统内存占用方法总结,包括了C# WinForm应用程序降低系统内存占用方法总结的使用技巧和注意事项,需要的朋友参考一下 背景: 微软的 .NET FRAMEWORK 现在可谓如火如荼了。但是,.NET 一直所为人诟病的就是“胃口太大”,狂吃内存,虽然微软声称 GC 的功能和智能化都很高,但是内存的回收问题,一直存在困扰,尤其是 winform 程序,

  • script/下的memstat.sh或者ps_mem.py都可以查看系统的内存情况,两个工具都需要root权限。

  • Android Studio似乎比其他任何应用程序占用更多内存。Java二进制增加了速度,过一会儿就慢下来了。通常重启android studio可以解决这个问题,但是,我需要每隔几个小时重启一次。在撰写本文时,Android Studio和Java总共占用了大约2.5GB内存。以前觉得eclipse不好:) 我有10GB的RAM,但仍然发现它使用缓慢,有时偶尔会挂起。我想知道其他人是否也面临着同

  • #!/bin/bash # Get current swap usage for all running processes # Erik Ljungstrom 27/05/2011 # Modified by Mikko Rantalainen 2012-08-09 # Pipe the output to "sort -nk3" to get sorted output # Modified

  • 嗨,我对java编程还比较陌生。我编写的下面的程序似乎占用了很多内存(大约240 MB,正常吗?-我不这么认为!)请建议一些方法来优化这个程序,以便减少内存存储。 程序-- 代码-

  • 问题内容: 我已经做了一些研究,但这个问题已经提出,但不是我打算的那样。我正在为QR登陆的客户端构建页面,这是一个下载应用程序的地方。因此,他不必在页面上打印2个QR码,我想检测当前的操作系统(Apple / Android / Other [不支持])并根据该值修改我的元素。 我已经看过脚本“ detectmobilebrowsers”,它的目的只是告诉用户是否完全可以移动,而我想弄清楚用户正在