From fabb70b2efbd125f74923d19ab12bc8e1371ed1f Mon Sep 17 00:00:00 2001 From: Dianne Hackborn Date: Tue, 11 Nov 2014 12:22:36 -0800 Subject: [PATCH] Add reporting of Parcel memory/count. Also fix issue #18340771: Dumpsys Procstats missing a newline Change-Id: I0c612187a3fb4d7eeafbf97d373efdef732c477e --- core/java/android/app/ActivityThread.java | 12 ++++++++---- core/java/android/os/Parcel.java | 6 ++++++ core/java/com/android/internal/app/ProcessStats.java | 1 + core/jni/android_os_Parcel.cpp | 13 +++++++++++++ 4 files changed, 28 insertions(+), 4 deletions(-) diff --git a/core/java/android/app/ActivityThread.java b/core/java/android/app/ActivityThread.java index 5f21d754558b..a268b1c30fae 100644 --- a/core/java/android/app/ActivityThread.java +++ b/core/java/android/app/ActivityThread.java @@ -60,6 +60,7 @@ import android.os.IBinder; import android.os.Looper; import android.os.Message; import android.os.MessageQueue; +import android.os.Parcel; import android.os.ParcelFileDescriptor; import android.os.PersistableBundle; import android.os.Process; @@ -965,6 +966,8 @@ public final class ActivityThread { int binderLocalObjectCount = Debug.getBinderLocalObjectCount(); int binderProxyObjectCount = Debug.getBinderProxyObjectCount(); int binderDeathObjectCount = Debug.getBinderDeathObjectCount(); + long parcelSize = Parcel.getGlobalAllocSize(); + long parcelCount = Parcel.getGlobalAllocCount(); long openSslSocketCount = Debug.countInstancesOfClass(OpenSSLSocketImpl.class); SQLiteDebug.PagerStats stats = SQLiteDebug.getDatabaseInfo(); @@ -1023,9 +1026,10 @@ public final class ActivityThread { printRow(pw, TWO_COUNT_COLUMNS, "Local Binders:", binderLocalObjectCount, "Proxy Binders:", binderProxyObjectCount); - printRow(pw, ONE_COUNT_COLUMN, "Death Recipients:", binderDeathObjectCount); - - printRow(pw, ONE_COUNT_COLUMN, "OpenSSL Sockets:", openSslSocketCount); + printRow(pw, TWO_COUNT_COLUMNS, "Parcel memory:", parcelSize/1024, + "Parcel count:", parcelCount); + printRow(pw, TWO_COUNT_COLUMNS, "Death Recipients:", binderDeathObjectCount, + "OpenSSL Sockets:", openSslSocketCount); // SQLite mem info pw.println(" "); @@ -1948,7 +1952,7 @@ public final class ActivityThread { if (dumpFullInfo) { printRow(pw, HEAP_FULL_COLUMN, "", "Pss", "Pss", "Shared", "Private", "Shared", "Private", "Swapped", "Heap", "Heap", "Heap"); - printRow(pw, HEAP_FULL_COLUMN, "", "Total", "Clean", "Dirty", "", + printRow(pw, HEAP_FULL_COLUMN, "", "Total", "Clean", "Dirty", "Dirty", "Clean", "Clean", "Dirty", "Size", "Alloc", "Free"); printRow(pw, HEAP_FULL_COLUMN, "", "------", "------", "------", "------", "------", "------", "------", "------", "------", "------"); diff --git a/core/java/android/os/Parcel.java b/core/java/android/os/Parcel.java index 5230128fabbd..bedc695ffbcf 100644 --- a/core/java/android/os/Parcel.java +++ b/core/java/android/os/Parcel.java @@ -340,6 +340,12 @@ public final class Parcel { } } + /** @hide */ + public static native long getGlobalAllocSize(); + + /** @hide */ + public static native long getGlobalAllocCount(); + /** * Returns the total amount of data contained in the parcel. */ diff --git a/core/java/com/android/internal/app/ProcessStats.java b/core/java/com/android/internal/app/ProcessStats.java index e3e5647f891b..1b254866d2ac 100644 --- a/core/java/com/android/internal/app/ProcessStats.java +++ b/core/java/com/android/internal/app/ProcessStats.java @@ -2746,6 +2746,7 @@ public final class ProcessStats implements Parcelable { pw.print("total"); dumpAdjTimesCheckin(pw, ",", mMemFactorDurations, mMemFactor, mStartTime, now); + pw.println(); if (mSysMemUsageTable != null) { pw.print("sysmemusage"); for (int i=0; i