需要查看某一款APP的内存占用情况,通常只能借助于第三方优化软件,比如鲁班大师,但是第三方软件只能给出手机整机的内存使用和占用情况,无法详细给出某一款APP的单独占用资源的信息,若想要查看某一个应用的单独占用手机性能的情况,需要借助于安卓开发工具Android studio(IOS无法查看,因IOS系统对应用程序及隐私信息保护政策做的非常严谨,未放开此类权限),步骤如下:
第一步: 若电脑从未安装过Android studio,则优先安装sdk,在D盘创建一个“Android SDK文件夹”,将4个SDK安装包解压在D:\Android SDK中,文件夹名称及解压对应关系如下:
最终文件夹中展示如下:
SDK下载网址:https://www.androiddevtools.cn/
SDK教程网址:
第二步: SDK安装完成后,需要配置环境变量,配置方法如下:
- 系统变量中,增加一个变量名为:ANDRIOD_HOME 变量值为:D:\Android SDK(当前SDK的目录为位置)
- Path变量名中新建三个变量值:
D:\Android SDK\build-tools\21.1.2
D:\Android SDK\tools
D:\Android SDK\platform-tools
最终环境变量配置结果如下图:
第三步: 再安装Android studio 按照默认步骤安装即可,安装过程中不要开启代理服务器。
安装完成后,启动Android studio,打开设置页面,将本地SDK的目录配置进来,如下图:
将手机通过USB线连接电脑,打开手机设置中的“开发者模式”,允许USB调试。
此时,在Android studio中可以看到已连接的手机型号,如下图:
- 使用adb命令查看内存:
按WIN+R进入运行界面,输入adb version ,check adb安装是否成功,若显示以下参数,则表示已可以正常使用:
查看应用程序内存情况,输入如下指令回车,可在列表中查看到当前运行的包名、对应的虚拟内存、物理内存、PID等的信息:
adb shell ps
根据PID号,输入以下命令,可以查看具体的详细信息,如下图:
adb shell dumpsys meminfo 22809
详细信息中,各参数值代表的含义,如下:
Private Dirty: 这部分内存是进程私有的、被修改过(dirty)的物理内存大小。它不包括被交换出去(swapped out)的内存,也不包括共享库占用的内存。
Private Clean: 这部分内存是进程私有的,但尚未被修改(clean)的物理内存大小。同样,它不包括被交换出去的内存和共享库占用的内存。
Shared Dirty: 这部分内存是被多个进程共享且被修改过的内存大小。它反映了进程之间共享的内存,并且这些内存已经被修改,但尚未写回磁盘。
Shared Clean: 这部分内存是被多个进程共享且尚未被修改的内存大小。
Anonymous: 这部分内存是进程私有的、未映射到文件的内存大小。通常,这是进程动态分配的内存,如堆(heap)分配的内存。
Mapped: 这部分内存是文件被映射到进程的地址空间的内存大小。它通常包括共享库和其他文件类型,这些文件被加载到进程的地址空间中。
SwapPss: 这部分内存是进程应该占用的交换空间(swap space)的大小,按比例集大小(PSS, Proportional Set Size)计算。PSS是一种衡量进程内存使用的方法,它考虑了共享库和其他共享内存的影响,使每个进程对其内存使用负责。
TotalPss: 这是进程的总PSS内存使用量,包括私有内存、共享内存和映射内存。
KernelPss: 这部分内存是进程在内核空间中使用的内存大小,按比例集大小(PSS)计算。
KernelSize: 进程在内核空间中分配的总内存大小。
MMapped: 进程映射的文件大小,不包括交换出去的部分。
AnonPss: 进程私有匿名内存的比例集大小(PSS)。
SharedPss: 进程共享内存的比例集大小(PSS)。这包括与其他进程共享的内存。
PrivatePss: 进程私有内存的比例集大小(PSS),包括匿名和文件映射的私有部分。
App Total: 应用程序的总内存使用,包括私有内存和共享内存。
App Pss: 应用程序的比例集大小(PSS)内存使用,这是衡量应用程序实际内存占用的常用指标。
Native Total: 应用程序中本地(native)代码使用的总内存。
Native Pss: 应用程序中本地代码使用的比例集大小(PSS)内存。
OOM Adj: Out of Memory(OOM)调整值。这是Android系统用来决定在内存不足时哪个进程应该被优先杀死的值。值越高,进程越容易被杀死。
Private Dirty 和 Private Clean: 这两个值显示了进程私有的物理内存使用情况。如果这两个值很大,说明应用使用了大量的内存,并且其中有一部分被修改了(Dirty)。
TotalPss by OOM adj: 这个值是根据OOM(Out of Memory)调整值计算出的进程的总PSS内存使用。OOM调整值决定了在系统内存不足时哪个进程最可能被杀死。关注这个值可以帮助你了解应用的内存使用是否接近系统的阈值。
Dalvik Heap: 如果你的应用是基于Android的Dalvik虚拟机(在较新的Android版本中是ART),那么Dalvik Heap相关的参数(如Dalvik Heap Size、Dalvik Heap Allocated、Dalvik Heap Free)将非常重要。这些值表示Dalvik虚拟机的堆内存使用情况,包括总大小、已分配大小和剩余大小。
Native Heap: 对于使用本地代码(如C/C++)的应用,Native Heap的相关参数(如Native Heap Size、Native Heap Allocated、Native Heap Free)也很重要。它们显示了本地堆内存的使用情况。
Objects: 这个部分列出了应用内部对象(如Views、ViewRootImpl、Activities等)的数量。如果应用存在内存泄漏,这些数字可能会异常增长。
Shallow Size 和 Retained Size: 这些值可以帮助你了解对象占用的内存大小以及这些对象被垃圾回收器保留的大小。如果Shallow Size或Retained Size的值很大,那么可能意味着应用中存在大量的对象或者存在内存泄漏。
Large Object Heap: 如果应用分配了超过一定阈值(通常是1MB)的对象,这些对象会被放在Large Object Heap中。关注这个部分的内存使用情况可以帮助你识别是否存在大量大对象导致内存问题。
- 使用adb命令查看cpu:
按WIN+R进入运行界面,输入adb shell ps指令,查看当前需要查看应用的PID号,根据PID号输入以下命令,则可查看当前应用占用CPU情况,如图:
adb shell top -m 1 -p 22809
此页面中还可以看其他信息的参数:
PID(进程ID):确认是否正确地监控了目标进程。
CPU%(CPU使用率):显示该进程当前占用的 CPU 百分比,可以用来判断进程的计算密集程度和对系统性能的影响。
VIRT(虚拟内存大小):进程使用的虚拟内存量,包括所有内存区域,如代码、数据、共享库等。
RES(常驻内存大小):进程实际占用的物理内存大小,即非交换区的内存。
THR(线程数):进程当前活跃的线程数量,反映进程的并发执行情况。
S(状态):显示进程的状态,比如 R(运行)、S(睡眠)、D(不可中断的睡眠)、Z(僵尸)等。
NAME(进程名):确定被监控的是哪个应用程序或服务。