Loading core/java/android/os/Debug.java +11 −10 Original line number Diff line number Diff line Loading @@ -130,7 +130,7 @@ public final class Debug public int otherSharedDirty; /** @hide */ public static final int NUM_OTHER_STATS = 9; public static final int NUM_OTHER_STATS = 10; private int[] otherStats = new int[NUM_OTHER_STATS*3]; Loading Loading @@ -177,15 +177,16 @@ public final class Debug /* @hide */ public static String getOtherLabel(int which) { switch (which) { case 0: return "Cursor"; case 1: return "Ashmem"; case 2: return "Other dev"; case 3: return ".so mmap"; case 4: return ".jar mmap"; case 5: return ".apk mmap"; case 6: return ".ttf mmap"; case 7: return ".dex mmap"; case 8: return "Other mmap"; case 0: return "Stack"; case 1: return "Cursor"; case 2: return "Ashmem"; case 3: return "Other dev"; case 4: return ".so mmap"; case 5: return ".jar mmap"; case 6: return ".apk mmap"; case 7: return ".ttf mmap"; case 8: return ".dex mmap"; case 9: return "Other mmap"; default: return "????"; } } Loading core/jni/android_os_Debug.cpp +28 −14 Original line number Diff line number Diff line Loading @@ -43,6 +43,7 @@ enum { HEAP_UNKNOWN, HEAP_DALVIK, HEAP_NATIVE, HEAP_STACK, HEAP_CURSOR, HEAP_ASHMEM, HEAP_UNKNOWN_DEV, Loading Loading @@ -164,6 +165,8 @@ static void read_mapinfo(FILE *fp, stats_t* stats) whichHeap = HEAP_NATIVE; } else if (strstr(name, "/dev/ashmem/dalvik-") == name) { whichHeap = HEAP_DALVIK; } else if (strstr(name, "[stack") == name) { whichHeap = HEAP_STACK; } else if (strstr(name, "/dev/ashmem/CursorWindow") == name) { whichHeap = HEAP_CURSOR; } else if (strstr(name, "/dev/ashmem/") == name) { Loading Loading @@ -510,7 +513,7 @@ static void android_os_Debug_dumpNativeHeap(JNIEnv* env, jobject clazz, jobject fileDescriptor) { if (fileDescriptor == NULL) { jniThrowNullPointerException(env, NULL); jniThrowNullPointerException(env, "fd == null"); return; } int origFd = jniGetFDFromFileDescriptor(env, fileDescriptor); Loading Loading @@ -547,7 +550,7 @@ static void android_os_Debug_dumpNativeBacktraceToFile(JNIEnv* env, jobject claz jint pid, jstring fileName) { if (fileName == NULL) { jniThrowNullPointerException(env, NULL); jniThrowNullPointerException(env, "file == null"); return; } const jchar* str = env->GetStringCritical(fileName, 0); Loading Loading @@ -611,6 +614,19 @@ int register_android_os_Debug(JNIEnv *env) { jclass clazz = env->FindClass("android/os/Debug$MemoryInfo"); // Sanity check the number of other statistics expected in Java matches here. jfieldID numOtherStats_field = env->GetStaticFieldID(clazz, "NUM_OTHER_STATS", "I"); jint numOtherStats = env->GetStaticIntField(clazz, numOtherStats_field); int expectedNumOtherStats = _NUM_HEAP - _NUM_CORE_HEAP; if (numOtherStats != expectedNumOtherStats) { jniThrowExceptionFmt(env, "java/lang/RuntimeException", "android.os.Debug.Meminfo.NUM_OTHER_STATS=%d expected %d", numOtherStats, expectedNumOtherStats); return JNI_ERR; } otherStats_field = env->GetFieldID(clazz, "otherStats", "[I"); for (int i=0; i<_NUM_CORE_HEAP; i++) { stat_fields[i].pss_field = env->GetFieldID(clazz, stat_field_names[i].pss_name, "I"); Loading @@ -620,8 +636,6 @@ int register_android_os_Debug(JNIEnv *env) env->GetFieldID(clazz, stat_field_names[i].sharedDirty_name, "I"); } otherStats_field = env->GetFieldID(clazz, "otherStats", "[I"); return jniRegisterNativeMethods(env, "android/os/Debug", gMethods, NELEM(gMethods)); } Loading Loading
core/java/android/os/Debug.java +11 −10 Original line number Diff line number Diff line Loading @@ -130,7 +130,7 @@ public final class Debug public int otherSharedDirty; /** @hide */ public static final int NUM_OTHER_STATS = 9; public static final int NUM_OTHER_STATS = 10; private int[] otherStats = new int[NUM_OTHER_STATS*3]; Loading Loading @@ -177,15 +177,16 @@ public final class Debug /* @hide */ public static String getOtherLabel(int which) { switch (which) { case 0: return "Cursor"; case 1: return "Ashmem"; case 2: return "Other dev"; case 3: return ".so mmap"; case 4: return ".jar mmap"; case 5: return ".apk mmap"; case 6: return ".ttf mmap"; case 7: return ".dex mmap"; case 8: return "Other mmap"; case 0: return "Stack"; case 1: return "Cursor"; case 2: return "Ashmem"; case 3: return "Other dev"; case 4: return ".so mmap"; case 5: return ".jar mmap"; case 6: return ".apk mmap"; case 7: return ".ttf mmap"; case 8: return ".dex mmap"; case 9: return "Other mmap"; default: return "????"; } } Loading
core/jni/android_os_Debug.cpp +28 −14 Original line number Diff line number Diff line Loading @@ -43,6 +43,7 @@ enum { HEAP_UNKNOWN, HEAP_DALVIK, HEAP_NATIVE, HEAP_STACK, HEAP_CURSOR, HEAP_ASHMEM, HEAP_UNKNOWN_DEV, Loading Loading @@ -164,6 +165,8 @@ static void read_mapinfo(FILE *fp, stats_t* stats) whichHeap = HEAP_NATIVE; } else if (strstr(name, "/dev/ashmem/dalvik-") == name) { whichHeap = HEAP_DALVIK; } else if (strstr(name, "[stack") == name) { whichHeap = HEAP_STACK; } else if (strstr(name, "/dev/ashmem/CursorWindow") == name) { whichHeap = HEAP_CURSOR; } else if (strstr(name, "/dev/ashmem/") == name) { Loading Loading @@ -510,7 +513,7 @@ static void android_os_Debug_dumpNativeHeap(JNIEnv* env, jobject clazz, jobject fileDescriptor) { if (fileDescriptor == NULL) { jniThrowNullPointerException(env, NULL); jniThrowNullPointerException(env, "fd == null"); return; } int origFd = jniGetFDFromFileDescriptor(env, fileDescriptor); Loading Loading @@ -547,7 +550,7 @@ static void android_os_Debug_dumpNativeBacktraceToFile(JNIEnv* env, jobject claz jint pid, jstring fileName) { if (fileName == NULL) { jniThrowNullPointerException(env, NULL); jniThrowNullPointerException(env, "file == null"); return; } const jchar* str = env->GetStringCritical(fileName, 0); Loading Loading @@ -611,6 +614,19 @@ int register_android_os_Debug(JNIEnv *env) { jclass clazz = env->FindClass("android/os/Debug$MemoryInfo"); // Sanity check the number of other statistics expected in Java matches here. jfieldID numOtherStats_field = env->GetStaticFieldID(clazz, "NUM_OTHER_STATS", "I"); jint numOtherStats = env->GetStaticIntField(clazz, numOtherStats_field); int expectedNumOtherStats = _NUM_HEAP - _NUM_CORE_HEAP; if (numOtherStats != expectedNumOtherStats) { jniThrowExceptionFmt(env, "java/lang/RuntimeException", "android.os.Debug.Meminfo.NUM_OTHER_STATS=%d expected %d", numOtherStats, expectedNumOtherStats); return JNI_ERR; } otherStats_field = env->GetFieldID(clazz, "otherStats", "[I"); for (int i=0; i<_NUM_CORE_HEAP; i++) { stat_fields[i].pss_field = env->GetFieldID(clazz, stat_field_names[i].pss_name, "I"); Loading @@ -620,8 +636,6 @@ int register_android_os_Debug(JNIEnv *env) env->GetFieldID(clazz, stat_field_names[i].sharedDirty_name, "I"); } otherStats_field = env->GetFieldID(clazz, "otherStats", "[I"); return jniRegisterNativeMethods(env, "android/os/Debug", gMethods, NELEM(gMethods)); } Loading