如何在Android中获取进程内存消耗

时间:2013-03-10 22:07:21

标签: java android memory memory-management android-emulator

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

1 个答案:

答案 0 :(得分: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) {
    }
    

请浏览my answer for explanation