From 537691fc2dc880d4b469fab82a4d209f6f67de69 Mon Sep 17 00:00:00 2001 From: Mathieu Chartier Date: Thu, 9 Apr 2015 14:32:31 -0700 Subject: Add dalvik subitems for -d in dumpsys meminfo "Total PSS by category" Example output of "adb shell dumpsys meminfo -d": Total PSS by category: 193605 kB: Dalvik 87561 kB: .Heap 77863 kB: .LOS 15333 kB: .Zygote 12848 kB: .NonMoving 6770 kB: .GC 2597 kB: .LinearAlloc 1180 kB: .JITCache 1180 kB: .IndirectRef 103936 kB: EGL mtrack 101827 kB: Native Bug: 17643507 (cherry picked from commit 546edc5a31bb5a843048e11d8afb0b1f6441ddb4) Change-Id: If34627cf93ba5305b428d2278f350a2649d63d5e --- .../android/server/am/ActivityManagerService.java | 23 ++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java index 09ebe60c88aa..54940006f105 100644 --- a/services/core/java/com/android/server/am/ActivityManagerService.java +++ b/services/core/java/com/android/server/am/ActivityManagerService.java @@ -91,6 +91,7 @@ import com.google.android.collect.Lists; import com.google.android.collect.Maps; import libcore.io.IoUtils; +import libcore.util.EmptyArray; import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlPullParserException; @@ -14163,7 +14164,7 @@ public final class ActivityManagerService extends ActivityManagerNative } else if ("-h".equals(opt)) { pw.println("meminfo dump options: [-a] [-d] [-c] [--oom] [process]"); pw.println(" -a: include all available information for each process."); - pw.println(" -d: include dalvik details when dumping process details."); + pw.println(" -d: include dalvik details."); pw.println(" -c: dump in a compact machine-parseable representation."); pw.println(" --oom: only show processes organized by oom adj."); pw.println(" --local: only collect details locally, don't call process."); @@ -14250,6 +14251,8 @@ public final class ActivityManagerService extends ActivityManagerNative final SparseArray procMemsMap = new SparseArray(); long nativePss = 0; long dalvikPss = 0; + long[] dalvikSubitemPss = dumpDalvik ? new long[Debug.MemoryInfo.NUM_DVK_STATS] : + EmptyArray.LONG; long otherPss = 0; long[] miscPss = new long[Debug.MemoryInfo.NUM_OTHER_STATS]; @@ -14327,6 +14330,9 @@ public final class ActivityManagerService extends ActivityManagerNative nativePss += mi.nativePss; dalvikPss += mi.dalvikPss; + for (int j=0; j catMems = new ArrayList(); catMems.add(new MemItem("Native", "Native", nativePss, -1)); - catMems.add(new MemItem("Dalvik", "Dalvik", dalvikPss, -2)); + final MemItem dalvikItem = new MemItem("Dalvik", "Dalvik", dalvikPss, -2); + if (dalvikSubitemPss.length > 0) { + dalvikItem.subitems = new ArrayList(); + for (int j=0; j