0

我想知道应用程序 A 到应用程序 B 的内存消耗。我了解本网站上讨论的所有技术。但是,它们都不适合我。我的场景是,我已经实现了一个代码,可以通过 top 命令监控任何特定应用程序的 CPU 消耗。但是,top 命令只提供 VSS 和 RSS,而我对 PSS 和 USS 感兴趣。获得这些值的一种方法是通过 procrank。但是,我不确定 procrank 命令是否可以像我尝试过的那样在智能手机上执行,process p2 = Runtime.getRuntime().exec("procrank");但它不起作用。(编辑:适用于 Android 模拟器(不是智能手机)。有人可以指导我如何通过应用程序 ID 或名称获取 PSS 和 USS,我已经通过 top 命令获取。

4

1 回答 1

0

我知道这个问题很老了,我会提出一些建议..

  • 首先在控制台中获得root权限

    Process process = Runtime.getRuntime().exec("su"); 
    
  • 然后用root权限编写你的命令

    su <--command-->
    
  • 读取流输出

    try {
      Process process = Runtime.getRuntime().exec("su");         
      DataOutputStream dataOutputStream = 
                               new DataOutputStream(process.getOutputStream());
      if (dataOutputStream != null) {
          dataOutputStream.writeBytes("procrank\n");             
          dataOutputStream.flush();
          BufferedInputStream bufferedInputStream = 
                               new BufferedInputStream(process.getInputStream());
          byte[] bff = new byte[bufferedInputStream.available()];
          bufferedInputStream.read(bff);
      }
    } catch (Exception e) {
    }
    

请通过我的答案进行解释

于 2018-02-20T12:44:10.423 回答