Android 内存分析

公司项目要对程序的内存和CPU占用分析,总结一下。

如果有些命令执行不成功,请先获取root权限。主要用到的命令为三个:

adb shell dumpsys meminfo com.xiaohu.test

输出信息主要关注NativeDalvik的Heap信息,分别给出了JNI和Java层的内存分配情况。

adb shell top d 1 | grep com.xiaohu.test

每隔1秒输出应用的CPU内存运行状态等信息,但是它给出的内存信息并不准确。

adb shell procrank | grep com.xiaohu.test

输出应用内存耗用四种不同的表现形式

  • VSS Virtual Set Size 虚拟耗用内存(包含共享库占用的内存)
  • RSS Resident Set Size 实际使用物理内存(包含共享库占用的内存)
  • PSS Proportional Set Size 实际使用的物理内存(比例分配共享库占用的内存)
  • USS Unique Set Size 进程独自占用的物理内存(不包含共享库占用的内存)

  • VSS 表示一个进程可访问的全部内存地址空间的大小。这个大小包括了进程已经申请但尚未使用的内存空间。在实际中很少用这种方式来表示进程占用内存的情况,用它来表示单个进程的内存使用情况是不准确的。

  • RSS 表示一个进程在RAM中实际使用的空间地址大小,包括了全部共享库占用的内存,这种表示进程占用内存的情况也是不准确的。
  • PSS 表示一个进程在RAM中实际使用的空间地址大小,它按比例包含了共享库占用的内存。假如有3个进程使用同一个共享库,那么每个进程的PSS就包括了1/3大小的共享库内存。这种方式表示进程的内存使用情况较准确,但当只有一个进程使用共享库时,其情况和RSS一模一样。
  • USS 表示一个进程本身占用的内存空间大小,不包含其它任何成分,这是表示进程内存大小的最好方式!

可以看到:VSS>=RSS>=PSS>=USS


尝试了使用DDMS分析Native内存的方法,由于导致游戏运行过慢放弃,但这仍不失为一个好方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值