安卓专项测试之内存及PerfDog和SoloPi比较

这次继续安卓专项测试之内存Android系统中每个APP占内存会有私有和公共的两部分:ShareDirty、PrivateDirty。“PrivateDirty”内存是其最重要的部分,因为只被自己的进程使用。它只在内存中存储,因此不能做分页存储到外存(Android不支持swap)。所有分配的Dalvik堆和本地堆都是“private dirty”内存;Dalvik堆和本地堆中和Zygote进程共享的部分是共享dirty内存。而Pss是另一种应用内存使用的计算方式,是把跨进程的共享页也计算在内 — 例如
摘要由CSDN通过智能技术生成

这次继续安卓专项测试之内存

Android系统中每个APP占内存会有私有和公共的两部分:ShareDirty、PrivateDirty。“PrivateDirty”内存是其最重要的部分,因为只被自己的进程使用。它只在内存中存储,因此不能做分页存储到外存(Android不支持swap)。所有分配的Dalvik堆和本地堆都是“private dirty”内存;Dalvik堆和本地堆中和Zygote进程共享的部分是共享dirty内存。
而Pss是另一种应用内存使用的计算方式,是把跨进程的共享页也计算在内 — 例如,在两个进程间共享的页,计算进每个进程PPS的值是它的一半大小。PSS计算方式的一个好处是:把所有进程的PSS值加起来就可以确定所有进程总共占用的内存。这意味着用PSS来计算进程的实际内存使用、进程间对比内存使用和总共剩余内存大小是很好的方式。
通常来说,我们只需关心Pss Total列和Private Dirty列就可以了
Android里最常用于观察进程内存的方法就是dumpsys meminfo <package name | pid> 命令,如下图:
在这里插入图片描述

SoloPi与PerfDog测试结果对比:

测试过程为打开app,然后进入游戏,玩一局,退出(重复三次),退出数据监控

PerfDog测试结果:
在这里插入图片描述

SoloPi 测试结果(监控间隔为500ms)
在这里插入图片描述
(不知道为什么SoloPi的PSS内存,PrivateDirty内存数据 都为0)
在这里插入图片描述
在这里插入图片描述

PerfDog 图比较直观,很容易看出app内存存在异常,一直在增加,SoloPi全局占用也能看出内存不断增加,PerfDog增加幅度为80M,50M,53M,SoloPi全局占用内存增加幅度35M,48M,62M

SoloPi代码分析(PerfDog没有开源):

用SoloPi测试app性能,有关内存方面,会生成全局占用,PSS内存,PrivateDirty内存三个文件
全局占用 = totalMemory - getAvailMemory;

RecordPattern pattern = new RecordPattern("全局占用", "MB", "Memory");
		pattern.setStartTime(startTime);
		pattern.setEndTime(endTime);
		result.put(pattern, usedMemory);

usedMemory 在totalMemory - getAvailMemory(context)里面获取

usedMemory.add
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值