美文网首页性能优化
Android内存中的RSS、PSS、USS

Android内存中的RSS、PSS、USS

作者: affyzh | 来源:发表于2019-10-22 15:47 被阅读0次

    在dumpsys meminfo中经常能看到以下指标:


    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较小而计算得出来的差值很大,那么可以认为共享部分占用的内存过大了。

    相关文章

      网友评论

        本文标题:Android内存中的RSS、PSS、USS

        本文链接:https://www.haomeiwen.com/subject/xaqhrttx.html