am fabb70b2: Add reporting of Parcel memory/count.
* commit 'fabb70b2efbd125f74923d19ab12bc8e1371ed1f': 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.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, "", "------", "------", "------", "------",
|
||||||
"------", "------", "------", "------", "------", "------");
|
"------", "------", "------", "------", "------", "------");
|
||||||
|
|||||||
@@ -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.
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -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++) {
|
||||||
|
|||||||
@@ -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";
|
||||||
|
|||||||
Reference in New Issue
Block a user