机器人:如何获得一个给定PID的内存使用量(RAM)programically机器人、如何获得、使用量、内存

2023-09-04 04:09:57 作者:儿子,看爹给你摇个娘来

我要记录一个给定的应用程序的内存使用情况,在给定的时间率。我写的code来获得所用的全部内存值,但不知道如何获得一个给定PID的内存使用情况。

请帮我出

这是在code I用于获取内存

  ActivityManager localActivityManager =(ActivityManager)getSystemService(活动);
    ActivityManager.MemoryInfo localMemoryInfo =新ActivityManager.MemoryInfo();
    localActivityManager.getMemoryInfo(localMemoryInfo);
    Log.i(,将String.valueOf(localMemoryInfo.availMem));
 
怎么看一个进程的pid

我想我可以使用公共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.