* commit 'caf3cddd5bff11a20e72e7df54b826e33d2fe6a9': Add reporting of Parcel memory/count.
This commit is contained in:
@@ -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(" ");
|
||||
|
||||
@@ -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.
|
||||
*/
|
||||
|
||||
@@ -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<mSysMemUsageTableSize; i++) {
|
||||
|
||||
@@ -688,6 +688,16 @@ static void android_os_Parcel_enforceInterface(JNIEnv* env, jclass clazz, jlong
|
||||
"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[] = {
|
||||
@@ -737,6 +747,9 @@ static const JNINativeMethod gParcelMethods[] = {
|
||||
{"nativeHasFileDescriptors", "(J)Z", (void*)android_os_Parcel_hasFileDescriptors},
|
||||
{"nativeWriteInterfaceToken", "(JLjava/lang/String;)V", (void*)android_os_Parcel_writeInterfaceToken},
|
||||
{"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";
|
||||
|
||||
Reference in New Issue
Block a user