【问题标题】:Calling procrank doesn't work on real devices调用 procrank 在真实设备上不起作用
【发布时间】:2012-07-06 15:13:17
【问题描述】:

根据google io video关于了解您的应用占用多少内存,您可以使用 procrank 并读取它的 USS 值。

我已经在模拟器上尝试过(无论我使用哪个版本 - 从 2.3.x 到 4.1),它运行良好,但在实际设备上运行,它不起作用(在带有 android 的 Galaxy s3 上测试4.0.4) 。就好像命令不存在一样。

怎么可能?有没有其他方法可以获得这个 USS 值?

【问题讨论】:

    标签: android memory googleio uss


    【解决方案1】:

    你可以使用dumpsys命令

    步骤:

    1. 发出命令行:dumpsys meminfo packageName
    2. Private Dirty 列是您想要的。

    【讨论】:

    • 你确定吗?完全一样吗?我的意思是,真的是这样的值:“当这个应用程序的进程被杀死时将释放的字节数”?
    • procrank 和 dumpsys 有什么区别
    【解决方案2】:

    你也可以用

    adb shell dumpsys meminfo
    

    adb shell dumpsys meminfo  + pid
    

    命令

    【讨论】:

    • 你确定吗?完全一样吗?我的意思是,真的是这样的值:“当这个应用程序的进程被杀死时将释放的字节数”?
    【解决方案3】:

    adb shell dumpsys meminfo [pid](私人脏污+私人清洁)

    相同

    procrank (USS)

    【讨论】:

    • 你能提供一些说明它是相同的参考吗?
    • 我检查了两个命令的实际输出以得出结论。网上还有一些零散的参考资料hereThe Uss refers to the private pages of a process, which can be further exclusively divided into PrCl(clean ones) and PrDi(dirty ones)hereThe important details are the memory used by USS (Private Dirty + Private Clean) and PSS total
    • 可以在此 [stackexchange-question] (unix.stackexchange.com/questions/33381/…) USS isn't reported in smaps, but indeed, it is the sum of private mappings 中找到另一个参考。
    【解决方案4】:

    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
    

    【讨论】:

      猜你喜欢
      • 2013-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-04
      • 2020-07-03
      • 1970-01-01
      • 2011-05-23
      相关资源
      最近更新 更多