查看基于Android 系统单个进程内存、CPU使用情况的几种方法

 一、利用Android API函数查看
1.1 ActivityManager查看可用内存。
ActivityManager.MemoryInfo outInfo = new ActivityManager.MemoryInfo();
am.getMemoryInfo(outInfo);
outInfo.availMem即为可用空闲内存。
1.2、android.os.Debug查询PSS,VSS,USS等单个进程使用内存信息
MemoryInfo[] memoryInfoArray = am.getProcessMemoryInfo(pids);
MemoryInfo pidMemoryInfo=memoryInfoArray[0];
pidMemoryInfo.getTotalPrivateDirty();

getTotalPrivateDirty()
Return total private dirty memory usage in kB. USS

getTotalPss()
Return total PSS memory usage in kB.
PSS
getTotalSharedDirty()
Return total shared dirty memory usage in kB. RSS


二、直接对Android文件进行解析查询
/proc/cpuinfo系统CPU的类型等多种信息。
/proc/meminfo 系统内存使用信息

/proc/meminfo
MemTotal: 16344972 kB
MemFree: 13634064 kB
Buffers: 3656 kB
Cached: 1195708 kB
我们查看机器内存时,会发现MemFree的值很小。这主要是因为,在linux中有这么一种思想,内存不用白不用,因此它尽可能的cache和buffer一些数据,以方便下次使用。但实际上这些内存也是可以立刻拿来使用的。
所以 空闲内存=free+buffers+cached=total-used
通过读取文件/proc/meminfo的信息获取Memory的总量。
ActivityManager. getMemoryInfo(ActivityManager.MemoryInfo)获取当前的可用Memory量。

 

三、通过Android系统提供的Runtime类,执行adb 命令(top,procrank,ps...等命令)查询
通过对执行结果的标准控制台输出进行解析。这样大大的扩展了Android查询功能.例如:
final Process m_process = Runtime.getRuntime().exec("/system/bin/top -n 1");
final StringBuilder sbread = new StringBuilder();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(m_process.getInputStream()), 8192);

# procrank
Runtime.getRuntime().exec("/system/xbin/procrank");
内存耗用:VSS/RSS/PSS/USS
Terms
• VSS - Virtual Set Size 虚拟耗用内存(包含共享库占用的内存)
• RSS - Resident Set Size 实际使用物理内存(包含共享库占用的内存)
• PSS - Proportional Set Size 实际使用的物理内存(比例分配共享库占用的内存)
• USS - Unique Set Size 进程独自占用的物理内存(不包含共享库占用的内存)
一般来说内存占用大小有如下规律:VSS >= RSS >= PSS >= USS
USS is the total private memory for a process, i.e. that memory that is completely unique to that process.USS is an extremely useful number because it indicates the true incremental cost of running a particular process. When a process is killed, the USS is the total memory that is actually returned to the system. USS is the best number to watch when initially suspicious of memory leaks in a process.

 

四、dumpsys

dumpsys meminfo                                              
Applications Memory Usage (kB):
Uptime: 1031937 Realtime: 1167591179860

Total PSS by process:
    44049 kB: com.skyworth.launchersky_app_home (pid 911)
    16839 kB: system (pid 791)
    12835 kB: com.skyworth.standardservices (pid 1310)
    11233 kB: com.android.wallpaper (pid 881)
     9791 kB: com.skyworth.sky_app_atv (pid 1018)
     9782 kB: android.process.media (pid 1232)
     9622 kB: com.skyworth.hotkey (pid 1666)
     9279 kB: com.android.systemui (pid 866)
     7400 kB: com.android.email (pid 1265)
     7318 kB: com.mstar.tv.service (pid 1246)
     6980 kB: com.skyworthdigital.stb.dataprovider (pid 1335)
     5808 kB: com.android.exchange (pid 1286)
     4923 kB: com.android.inputmethod.pinyin (pid 892)
     4351 kB: com.android.providers.calendar (pid 985)
     4132 kB: com.android.calendar (pid 961)
     3548 kB: com.android.deskclock (pid 1059)

Total PSS by OOM adjustment:
    16839 kB: System
               16839 kB: system (pid 791)
     9279 kB: Persistent
                9279 kB: com.android.systemui (pid 866)
    44049 kB: Foreground
               44049 kB: com.skyworth.launchersky_app_home (pid 911)
    11233 kB: Visible
               11233 kB: com.android.wallpaper (pid 881)
    25076 kB: Perceptible
               12835 kB: com.skyworth.standardservices (pid 1310)
                7318 kB: com.mstar.tv.service (pid 1246)
                4923 kB: com.android.inputmethod.pinyin (pid 892)
     6980 kB: A Services
                6980 kB: com.skyworthdigital.stb.dataprovider (pid 1335)
     9791 kB: Previous
                9791 kB: com.skyworth.sky_app_atv (pid 1018)
    44643 kB: Background
                9782 kB: android.process.media (pid 1232)
                9622 kB: com.skyworth.hotkey (pid 1666)
                7400 kB: com.android.email (pid 1265)
                5808 kB: com.android.exchange (pid 1286)
                4351 kB: com.android.providers.calendar (pid 985)
                4132 kB: com.android.calendar (pid 961)
                3548 kB: com.android.deskclock (pid 1059)

Total PSS by category:
    56161 kB: Dalvik
    30951 kB: Native
    28795 kB: Unknown
    24122 kB: .so mmap
    18489 kB: .dex mmap
     7047 kB: Other mmap
     1109 kB: .ttf mmap
     1036 kB: .apk mmap
       88 kB: Other dev
       52 kB: Ashmem
       24 kB: .jar mmap
       16 kB: Cursor

Total PSS: 167890 kB

转自:http://blog.csdn.net/kieven2008/article/details/6445421

相关推荐
<p> 欢迎参加英特尔® OpenVINO™工具套件初级课程 !本课程面向零基础学员,将从AI的基本概念开始,介绍人工智能与视觉应用的相关知识,并且帮助您快速理解英特尔® OpenVINO™工具套件的基本概念以及应用场景。整个课程包含了视频的处理,深度学习的相关知识,人工智能应用的推理加速,以及英特尔® OpenVINO™工具套件的Demo演示。通过本课程的学习,将帮助您快速上手计算机视觉的基本知识和英特尔® OpenVINO™ 工具套件的相关概念。 </p> <p> 为保证您顺利收听课程参与测试获取证书,还请您于<strong>电脑端</strong>进行课程收听学习! </p> <p> 为了便于您更好的学习本次课程,推荐您免费<strong>下载英特尔® OpenVINO™工具套件</strong>,下载地址:https://t.csdnimg.cn/yOf5 </p> <p> 收听课程并完成章节测试,可获得本课程<strong>专属定制证书</strong>,还可参与<strong>福利抽奖</strong>,活动详情:https://bss.csdn.net/m/topic/intel_openvino </p> <p> 8月1日-9月30日,学习完成【初级课程】的小伙伴,可以<span style="color:#FF0000;"><strong>免费学习【中级课程】</strong></span>,中级课程免费学习优惠券将在学完初级课程后的7个工作日内发送至您的账户,您可以在:<a href="https://i.csdn.net/#/wallet/coupon">https://i.csdn.net/#/wallet/coupon</a>查询优惠券情况,请大家报名初级课程后尽快学习哦~ </p> <p> <span style="font-size:12px;">请注意:点击报名即表示您确认您已年满18周岁,并且同意CSDN基于商务需求收集并使用您的个人信息,用于注册OpenVINO™工具套件及其课程。CSDN和英特尔会为您定制最新的科学技术和行业信息,将通过邮件或者短信的形式推送给您,您也可以随时取消订阅不再从CSDN或Intel接收此类信息。 查看更多详细信息请点击CSDN“<a href="https://passport.csdn.net/service">用户服务协议</a>”,英特尔“<a href="https://www.intel.cn/content/www/cn/zh/privacy/intel-privacy-notice.html?_ga=2.83783126.1562103805.1560759984-1414337906.1552367839&elq_cid=1761146&erpm_id=7141654/privacy/us/en/">隐私声明</a>”和“<a href="https://www.intel.cn/content/www/cn/zh/legal/terms-of-use.html?_ga=2.84823001.1188745750.1560759986-1414337906.1552367839&elq_cid=1761146&erpm_id=7141654/privacy/us/en/">使用条款</a>”。</span> </p> <p> <br /> </p>
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页