2011-04-27 22 views
1

我想要计算android中单个进程使用的内存,为此我卡在这一点。在android中的进程的内存信息

ActivityManager am=(ActivityManager)getSystemService(Context.ACTIVITY_SERVICE); 
android.os.Debug.MemoryInfo[] mem=am.getProcessMemoryInfo(ProcessId); 

从上面的“MemoryInfo”我应该考虑什么?

{mem.getTotalPss() or mem.getTotalPrivateDirty() or mem.getTotalSharedDirty()} 

得到的RAM的过程中使用的量。

请帮我这个。提前致谢。

回答

1

mem.getTotalPss()为您提供了该进程在KB

0

占总内存棉花糖开始你在MemoryInfo一些辅助功能,你可以查询。它也可以给你一个解析(和额外)信息的列表。

请注意,至少在s6 summary.graphics总是给出0。如果一个进程不是一个art/dalvik android进程,那么它将在所有返回字符串上给出0。它会将它们返回到这张地图。

int pids[] =new int[1]; 
    pids[0]= pID; 
    Debug.MemoryInfo [] mems1= am.getProcessMemoryInfo(pids); 

    if(Build.VERSION.SDK_INT >= 23) 
    if(mems1.length==1) { 

     Debug.MemoryInfo meminfo=new Debug.MemoryInfo(); 

     Map<String, String> mems = mems1[0].getMemoryStats(); 

     for (Map.Entry<String, String> entry : mems.entrySet()) 
     { 
      ret+=" k: "+entry.getKey()+":"+entry.getValue(); 
      // addLineToSb(di, "m23: "+entry.getKey() + ":"+entry.getValue()+"kB"); 

     } 


    }