monkey中看进程占用内存大小搜Total PSS by process:
在dumpsys meminfo中经常能看到以下指标:
可以看到有PSS的指标。而使用ps时,有时候还能看到RSS,USS。那这些指标代表什么意思呢?
计算内存足迹
首先,我们得知道kernel会追踪系统中所有的内存页面的内存分配。
Pages used by different processes
在计算app使用了多少内存时,系统需要统计共享页面(shared pages)。App在访问同一个service或者library的时候会共享内存页面。比如,Google地图和一个游戏app可能会共享一个定位服务。这使得在决定每个app独占多少内存时变得十分困难。
Pages shared by two apps (middle)
因此在为一个app计算内存足迹时,可以使用以下任意指标。
- Resident Set Size(RSS):app使用的任意内存页面数量,包括shared 和 non-shared pages.
- Proportional Set Size(PSS):app使用的non-shared pages,以及使用的shared page的平均值。比如,如果三个进程共享3MB,则认为每个进程平均占用1MB。也就是按比例的(Proportional)。
- Unique Set Size(USS):app使用的non-shared pages,shared pages被排除在外。
PSS在操作系统想知道所有进程使用了多少内存时是十分有用的。但在计算PSS时由于区分哪部分被共享,因此比较耗时。RSS的话不需要区分shared和non-shared pages的差异,因此计算起来更快。同时在追踪内存分配变化时会显得比较实用。最后,可以使用RSS-USS得出共享部分占用的内存大小,如果USS较小而计算得出来的差值很大,那么可以认为共享部分占用的内存过大了。
作者:affyzh
链接:https://www.jianshu.com/p/b68704674c58
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。