diff options
author | 2018-07-10 08:13:12 +0000 | |
---|---|---|
committer | 2018-07-10 08:13:12 +0000 | |
commit | a800f9ab6bf515f0a43dd2ce949e67c76afa4f85 (patch) | |
tree | 66ff2062068a612cc5b4716e85fa6d440e34d8ec | |
parent | a15511e9c4519735cffeb0caa12eaac12ed2bc54 (diff) | |
parent | 786d5453bfd73f9ee740f6ead12b0514f7e6023c (diff) |
Merge "Fix the lost RAM calculation"
-rw-r--r-- | services/core/java/com/android/server/am/ActivityManagerService.java | 11 | ||||
-rw-r--r-- | services/core/java/com/android/server/am/ProcessMemInfo.java | 1 |
2 files changed, 9 insertions, 3 deletions
diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java index a23060982547..b31c8db3c54e 100644 --- a/services/core/java/com/android/server/am/ActivityManagerService.java +++ b/services/core/java/com/android/server/am/ActivityManagerService.java @@ -16017,6 +16017,7 @@ public class ActivityManagerService extends IActivityManager.Stub } updateCpuStatsNow(); long[] memtrackTmp = new long[1]; + long[] swaptrackTmp = new long[2]; final List<ProcessCpuTracker.Stats> stats; // Get a list of Stats that have vsize > 0 synchronized (mProcessCpuTracker) { @@ -16027,12 +16028,13 @@ public class ActivityManagerService extends IActivityManager.Stub final int statsCount = stats.size(); for (int i = 0; i < statsCount; i++) { ProcessCpuTracker.Stats st = stats.get(i); - long pss = Debug.getPss(st.pid, null, memtrackTmp); + long pss = Debug.getPss(st.pid, swaptrackTmp, memtrackTmp); if (pss > 0) { if (infoMap.indexOfKey(st.pid) < 0) { ProcessMemInfo mi = new ProcessMemInfo(st.name, st.pid, ProcessList.NATIVE_ADJ, -1, "native", null); mi.pss = pss; + mi.swapPss = swaptrackTmp[1]; mi.memtrack = memtrackTmp[0]; memInfos.add(mi); } @@ -16040,14 +16042,17 @@ public class ActivityManagerService extends IActivityManager.Stub } long totalPss = 0; + long totalSwapPss = 0; long totalMemtrack = 0; for (int i=0, N=memInfos.size(); i<N; i++) { ProcessMemInfo mi = memInfos.get(i); if (mi.pss == 0) { - mi.pss = Debug.getPss(mi.pid, null, memtrackTmp); + mi.pss = Debug.getPss(mi.pid, swaptrackTmp, memtrackTmp); + mi.swapPss = swaptrackTmp[1]; mi.memtrack = memtrackTmp[0]; } totalPss += mi.pss; + totalSwapPss += mi.swapPss; totalMemtrack += mi.memtrack; } Collections.sort(memInfos, new Comparator<ProcessMemInfo>() { @@ -16209,7 +16214,7 @@ public class ActivityManagerService extends IActivityManager.Stub memInfoBuilder.append("\n"); memInfoBuilder.append(" Lost RAM: "); memInfoBuilder.append(stringifyKBSize(memInfo.getTotalSizeKb() - - totalPss - memInfo.getFreeSizeKb() - memInfo.getCachedSizeKb() + - (totalPss - totalSwapPss) - memInfo.getFreeSizeKb() - memInfo.getCachedSizeKb() - memInfo.getKernelUsedSizeKb() - memInfo.getZramTotalSizeKb())); memInfoBuilder.append("\n"); Slog.i(TAG, "Low on memory:"); diff --git a/services/core/java/com/android/server/am/ProcessMemInfo.java b/services/core/java/com/android/server/am/ProcessMemInfo.java index 83d29e2bba68..6c10a2af9fe6 100644 --- a/services/core/java/com/android/server/am/ProcessMemInfo.java +++ b/services/core/java/com/android/server/am/ProcessMemInfo.java @@ -24,6 +24,7 @@ public class ProcessMemInfo { final String adjType; final String adjReason; long pss; + long swapPss; long memtrack; public ProcessMemInfo(String _name, int _pid, int _oomAdj, int _procState, |