2012-04-09 54 views
1

我试图找到使用dalvikPss值的每个运行的应用程序和服务的相对内存使用的建议hereAndroid的:如何让所有正在运行的进程作为建议有

的总PSS,我需要所有的总结正在运行的进程的PSS值。我的问题是,如何获得所有正在运行的进程的pss值?

我的理解是,在Android的服务和任务链接到流程。这种理解是否正确?

如果是这样,将汇总所有进程的PSS值从ActivityManager.getRunningAppProcesses返回给我的所有正在运行的进程(服务和任务包括在内)的总PSS?

+0

我没有。这是我的最后一招,因为从应用程序启动控制台可能会有一些不好的性能影响吗? 而且除了实现这一目标,我也想知道,如果我的理解是处理代表的服务和任务是正确的。你有什么想法吗? – 2012-04-09 11:10:45

+0

是right.then你有我认为使用'android.os.Debug.MemoryInfo' – 2012-04-09 11:15:03

回答

4

用于获取所有正在运行的进程的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); 
+0

非常感谢你也试过......我看到的第一个例子中的另一个问题为好。你是否建议我总结“getTotalPss()”的输出? “dalvikPss”中的价值是什么?大多数消息来源都建议使用该值 第二个答案涉及启动一个控制台吗? – 2012-04-09 11:25:27

+0

@HeshanPerera:我有单独获得PSS价值为每个进程再总结up.and第二装置不启动控制台是vsible到user.we只是运行在后台此命令 – 2012-04-09 11:31:38

+0

再次感谢您这两种方式。后者我现在明白的陈述。但是我不明白第一种方法是,我总结哪个值?你从三个不同的功能输出吗?在这三项职能中,我总结了哪些? – 2012-04-09 11:37:58

相关问题