我要记录一个给定的应用程序的内存使用情况,在给定的时间率。我写的code来获得所用的全部内存值,但不知道如何获得一个给定PID的内存使用情况。
请帮我出
这是在code I用于获取内存
ActivityManager localActivityManager =(ActivityManager)getSystemService(活动);
ActivityManager.MemoryInfo localMemoryInfo =新ActivityManager.MemoryInfo();
localActivityManager.getMemoryInfo(localMemoryInfo);
Log.i(,将String.valueOf(localMemoryInfo.availMem));
我想我可以使用公共MemoryInfo [] getProcessMemoryInfo(INT []的PID)得到它,但不知道如何$ C $下它,因为IM的是Android beginer
解决方案 ActivityManager localActivityManager =(ActivityManager)getSystemService(Context.ACTIVITY_SERVICE); //使用Context.ACTIVITY_SERVICE而不是字面的活动
名单< ActivityManager.RunningAppProcessInfo> procsInfo = localActivityManager.getRunningAppProcesses();
INT []的PID =新INT [procsInfo.size()];
的for(int i = 0; I< procsInfo.size();我++){
ActivityManager.RunningAppProcessInfo信息= procsInfo.get(我);
PID的[I] = info.pid;
}
Debug.MemoryInfo [] procsMemInfo = localActivityManager.getProcessMemoryInfo(PID)的;
//现在走procsMemInfo阵列
如果您计划定期定时定期重新查询运行PID和查询内存的信息,您可以使用时间戳来计算随时间变化的内存使用情况。
i want to log ram usage of a given application at a given time rate. i wrote the code to get the full memory value used but do not know how to get the memory usage of a given PID.
please help me out
this is the code i used to get the memory
ActivityManager localActivityManager = (ActivityManager)getSystemService("activity");
ActivityManager.MemoryInfo localMemoryInfo = new ActivityManager.MemoryInfo();
localActivityManager.getMemoryInfo(localMemoryInfo);
Log.i("",String.valueOf(localMemoryInfo.availMem));
i think i can get it using public MemoryInfo[] getProcessMemoryInfo (int[] pids), but do not know how to code for it since im a android beginer
解决方案ActivityManager localActivityManager = (ActivityManager)getSystemService(Context.ACTIVITY_SERVICE); // use Context.ACTIVITY_SERVICE not the literal "activity"
List<ActivityManager.RunningAppProcessInfo> procsInfo = localActivityManager.getRunningAppProcesses();
int[] pids = new int[procsInfo.size()];
for (int i = 0; i < procsInfo.size(); i++) {
ActivityManager.RunningAppProcessInfo info = procsInfo.get(i);
pids[i] = info.pid;
}
Debug.MemoryInfo[] procsMemInfo = localActivityManager.getProcessMemoryInfo(pids);
// now walk the procsMemInfo array
If you schedule a recurring timer to periodically re-query for running pids and query for memory info you can use timestamps to compute the memory usage over time.