作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用建议的 dalvikPss 值查找每个正在运行的应用程序和服务的相对内存使用情况 here
正如那里所建议的,我需要总结所有正在运行的进程的 PSS 值。我的问题是,如何获取所有正在运行的进程的 pss 值?
我的理解是 Android 中的服务和任务与进程相关联。这种理解是否正确?
如果是这样,将从 ActivityManager.getRunningAppProcesses
返回的所有进程的 PSS 值求和,是否可以得到所有正在运行的进程(包括服务和任务)的总 PSS?
最佳答案
用于获取所有正在运行的进程的 PSS 值:使用这个:
ActivityManager activityManager = (ActivityManager) context.getSystemService(ACTIVITY_SERVICE);
List<RunningAppProcessInfo> runningAppProcesses = activityManager.getRunningAppProcesses();
Map<Integer, String> pidMap = new TreeMap<Integer, String>();
for (RunningAppProcessInfo runningAppProcessInfo : runningAppProcesses)
{
pidMap.put(runningAppProcessInfo.pid, runningAppProcessInfo.processName);
}
Collection<Integer> keys = pidMap.keySet();
for(int key : keys)
{
int pids[] = new int[1];
pids[0] = key;
android.os.Debug.MemoryInfo[] memoryInfoArray = activityManager.getProcessMemoryInfo(pids);
for(android.os.Debug.MemoryInfo pidMemoryInfo: memoryInfoArray)
{
Log.i(TAG, String.format("** MEMINFO in pid %d [%s] **\n",pids[0],pidMap.get(pids[0])));
Log.i(TAG, " pidMemoryInfo.getTotalPrivateDirty(): " + pidMemoryInfo.getTotalPrivateDirty() + "\n");
Log.i(TAG, " pidMemoryInfo.getTotalPss(): " + pidMemoryInfo.getTotalPss() + "\n");
Log.i(TAG, " pidMemoryInfo.getTotalSharedDirty(): " + pidMemoryInfo.getTotalSharedDirty() + "\n");
}
}
或者您也可以使用运行时获取 PSS 值:
final Process m_process = Runtime.getRuntime().exec("/system/bin/top -n 1");
final StringBuilder sbread = new StringBuilder();
BufferedReader bufferedReader = new BufferedReader(new
InputStreamReader(m_process.getInputStream()), 8192);
关于安卓 : How to get total PSS of all running processes,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10071953/
我是一名优秀的程序员,十分优秀!