调用procrank在真实设备上无法工作

8
根据Google IO视频中有关如何了解应用程序占用内存的内容,您可以使用procrank并读取其USS值。我已在模拟器上尝试过(无论使用哪个版本-从2.3.x到4.1),它都能正常工作,但在实际设备上运行时,它不起作用(在搭载Android 4.0.4的Galaxy S3上进行了测试)。就好像该命令不存在一样。怎么会这样?是否有替代方法来获取此USS值?

问题指的是这个会话的视频中,从第558秒开始的部分。 - Mohammed Elrashidy
4个回答

4
你可以使用dumpsys命令。
步骤:
  1. 输入命令行:dumpsys meminfo packageName
  2. Private Dirty列是你想要的。

你确定吗?它完全相同吗?我的意思是,这个值真的是说:“当此应用程序的进程被杀死时将释放的字节数量”吗? - android developer
procrank和dumpsys有什么区别? - Hugo

2

你也可以使用

adb shell dumpsys meminfo

或者

adb shell dumpsys meminfo  + pid

命令


你确定吗?完全一样吗?我的意思是,这个值真的是说:“当杀死该应用程序的进程时将释放的字节数”吗? - android developer

1

adb shell dumpsys meminfo [pid](私有脏+私有干净)

procrank(USS)相同


你能提供一些证据来证明它们是相同的吗? - android developer
我检查了两个命令的实际输出,得出结论。此外,在网上有一些零散的参考资料这里“Uss指的是进程的私有页面,可以进一步分为PrCl(干净的)和PrDi(脏的)”和这里“重要细节是USS(私有脏+私有干净)和PSS总内存使用量”。 - neel
另一个参考可以在这个[stackexchange-question](https://unix.stackexchange.com/questions/33381/getting-information-about-a-process-memory-usage-from-proc-pid-smaps)中找到。 USS在smaps中没有报告,但实际上它是私有映射的总和。 - neel

-1

procrank和dumpsys meminfo不是同一个命令,因为procrank可以显示更多被意外杀死的线程。

首先,您需要从Google获取procrank、procmem、libpagemap.so。

然后执行以下推送操作:

adb push procrank /system/xbin 
adb push procmem /system/xbin 
adb push libpagemap.so /system/lib

最后一项:

adb shell chmod 6755 /system/xbin/procrank 
adb shell chmod 6755 /system/xbin/procmem 
adb shell chmod 6755 /system/lib/libpagemap.so

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接