我正在尝试计算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量。
请帮我解决这个问题。提前谢谢。
答案 0 :(得分:4)
答案 1 :(得分:1)
mem.getTotalPss()为您提供该进程在Kb中占用的总内存
答案 2 :(得分:0)
从marshmallow开始,您可以在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");
}
}