am fabb70b2: Add reporting of Parcel memory/count.

* commit 'fabb70b2efbd125f74923d19ab12bc8e1371ed1f':
  Add reporting of Parcel memory/count.
This commit is contained in:
Dianne Hackborn
2014-11-12 22:41:51 +00:00
committed by Android Git Automerger
4 changed files with 28 additions and 4 deletions

View File

@@ -60,6 +60,7 @@ import android.os.IBinder;
import android.os.Looper; import android.os.Looper;
import android.os.Message; import android.os.Message;
import android.os.MessageQueue; import android.os.MessageQueue;
import android.os.Parcel;
import android.os.ParcelFileDescriptor; import android.os.ParcelFileDescriptor;
import android.os.PersistableBundle; import android.os.PersistableBundle;
import android.os.Process; import android.os.Process;
@@ -965,6 +966,8 @@ public final class ActivityThread {
int binderLocalObjectCount = Debug.getBinderLocalObjectCount(); int binderLocalObjectCount = Debug.getBinderLocalObjectCount();
int binderProxyObjectCount = Debug.getBinderProxyObjectCount(); int binderProxyObjectCount = Debug.getBinderProxyObjectCount();
int binderDeathObjectCount = Debug.getBinderDeathObjectCount(); int binderDeathObjectCount = Debug.getBinderDeathObjectCount();
long parcelSize = Parcel.getGlobalAllocSize();
long parcelCount = Parcel.getGlobalAllocCount();
long openSslSocketCount = Debug.countInstancesOfClass(OpenSSLSocketImpl.class); long openSslSocketCount = Debug.countInstancesOfClass(OpenSSLSocketImpl.class);
SQLiteDebug.PagerStats stats = SQLiteDebug.getDatabaseInfo(); SQLiteDebug.PagerStats stats = SQLiteDebug.getDatabaseInfo();
@@ -1023,9 +1026,10 @@ public final class ActivityThread {
printRow(pw, TWO_COUNT_COLUMNS, "Local Binders:", binderLocalObjectCount, printRow(pw, TWO_COUNT_COLUMNS, "Local Binders:", binderLocalObjectCount,
"Proxy Binders:", binderProxyObjectCount); "Proxy Binders:", binderProxyObjectCount);
printRow(pw, ONE_COUNT_COLUMN, "Death Recipients:", binderDeathObjectCount); printRow(pw, TWO_COUNT_COLUMNS, "Parcel memory:", parcelSize/1024,
"Parcel count:", parcelCount);
printRow(pw, ONE_COUNT_COLUMN, "OpenSSL Sockets:", openSslSocketCount); printRow(pw, TWO_COUNT_COLUMNS, "Death Recipients:", binderDeathObjectCount,
"OpenSSL Sockets:", openSslSocketCount);
// SQLite mem info // SQLite mem info
pw.println(" "); pw.println(" ");
@@ -1948,7 +1952,7 @@ public final class ActivityThread {
if (dumpFullInfo) { if (dumpFullInfo) {
printRow(pw, HEAP_FULL_COLUMN, "", "Pss", "Pss", "Shared", "Private", printRow(pw, HEAP_FULL_COLUMN, "", "Pss", "Pss", "Shared", "Private",
"Shared", "Private", "Swapped", "Heap", "Heap", "Heap"); "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"); "Clean", "Clean", "Dirty", "Size", "Alloc", "Free");
printRow(pw, HEAP_FULL_COLUMN, "", "------", "------", "------", "------", printRow(pw, HEAP_FULL_COLUMN, "", "------", "------", "------", "------",
"------", "------", "------", "------", "------", "------"); "------", "------", "------", "------", "------", "------");

View File

@@ -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. * Returns the total amount of data contained in the parcel.
*/ */

View File

@@ -2746,6 +2746,7 @@ public final class ProcessStats implements Parcelable {
pw.print("total"); pw.print("total");
dumpAdjTimesCheckin(pw, ",", mMemFactorDurations, mMemFactor, dumpAdjTimesCheckin(pw, ",", mMemFactorDurations, mMemFactor,
mStartTime, now); mStartTime, now);
pw.println();
if (mSysMemUsageTable != null) { if (mSysMemUsageTable != null) {
pw.print("sysmemusage"); pw.print("sysmemusage");
for (int i=0; i<mSysMemUsageTableSize; i++) { for (int i=0; i<mSysMemUsageTableSize; i++) {

View File

@@ -688,6 +688,16 @@ static void android_os_Parcel_enforceInterface(JNIEnv* env, jclass clazz, jlong
"Binder invocation to an incorrect interface"); "Binder invocation to an incorrect interface");
} }
static jlong android_os_Parcel_getGlobalAllocSize(JNIEnv* env, jclass clazz)
{
return Parcel::getGlobalAllocSize();
}
static jlong android_os_Parcel_getGlobalAllocCount(JNIEnv* env, jclass clazz)
{
return Parcel::getGlobalAllocCount();
}
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
static const JNINativeMethod gParcelMethods[] = { static const JNINativeMethod gParcelMethods[] = {
@@ -737,6 +747,9 @@ static const JNINativeMethod gParcelMethods[] = {
{"nativeHasFileDescriptors", "(J)Z", (void*)android_os_Parcel_hasFileDescriptors}, {"nativeHasFileDescriptors", "(J)Z", (void*)android_os_Parcel_hasFileDescriptors},
{"nativeWriteInterfaceToken", "(JLjava/lang/String;)V", (void*)android_os_Parcel_writeInterfaceToken}, {"nativeWriteInterfaceToken", "(JLjava/lang/String;)V", (void*)android_os_Parcel_writeInterfaceToken},
{"nativeEnforceInterface", "(JLjava/lang/String;)V", (void*)android_os_Parcel_enforceInterface}, {"nativeEnforceInterface", "(JLjava/lang/String;)V", (void*)android_os_Parcel_enforceInterface},
{"getGlobalAllocSize", "()J", (void*)android_os_Parcel_getGlobalAllocSize},
{"getGlobalAllocCount", "()J", (void*)android_os_Parcel_getGlobalAllocCount},
}; };
const char* const kParcelPathName = "android/os/Parcel"; const char* const kParcelPathName = "android/os/Parcel";