More stats for meminfo
Added shared clean tracking (for pageable stuff). Renamed .oat and .art mmap.
(cherry picked from commit 967d53b17b6010c3a675ca9c3bbd0e9dd2f2f092)
Change-Id: I741e0dbe0d3f9aee6975c6fad8af9905942962d4
diff --git a/core/jni/android_os_Debug.cpp b/core/jni/android_os_Debug.cpp
index 991eb4f..ba82666 100644
--- a/core/jni/android_os_Debug.cpp
+++ b/core/jni/android_os_Debug.cpp
@@ -64,20 +64,22 @@
jfieldID pss_field;
jfieldID privateDirty_field;
jfieldID sharedDirty_field;
+ jfieldID sharedClean_field;
};
struct stat_field_names {
const char* pss_name;
const char* privateDirty_name;
const char* sharedDirty_name;
+ const char* sharedClean_name;
};
static stat_fields stat_fields[_NUM_CORE_HEAP];
static stat_field_names stat_field_names[_NUM_CORE_HEAP] = {
- { "otherPss", "otherPrivateDirty", "otherSharedDirty" },
- { "dalvikPss", "dalvikPrivateDirty", "dalvikSharedDirty" },
- { "nativePss", "nativePrivateDirty", "nativeSharedDirty" }
+ { "otherPss", "otherPrivateDirty", "otherSharedDirty", "otherSharedClean" },
+ { "dalvikPss", "dalvikPrivateDirty", "dalvikSharedDirty", "dalvikSharedClean" },
+ { "nativePss", "nativePrivateDirty", "nativeSharedDirty", "nativeSharedClean" }
};
jfieldID otherStats_field;
@@ -86,6 +88,7 @@
int pss;
int privateDirty;
int sharedDirty;
+ int sharedClean;
};
#define BINDER_STATS "/proc/binder/stats"
@@ -234,6 +237,7 @@
stats[whichHeap].pss += pss;
stats[whichHeap].privateDirty += private_dirty;
stats[whichHeap].sharedDirty += shared_dirty;
+ stats[whichHeap].sharedClean += shared_clean;
}
}
}
@@ -263,12 +267,14 @@
stats[HEAP_UNKNOWN].pss += stats[i].pss;
stats[HEAP_UNKNOWN].privateDirty += stats[i].privateDirty;
stats[HEAP_UNKNOWN].sharedDirty += stats[i].sharedDirty;
+ stats[HEAP_UNKNOWN].sharedClean += stats[i].sharedClean;
}
for (int i=0; i<_NUM_CORE_HEAP; i++) {
env->SetIntField(object, stat_fields[i].pss_field, stats[i].pss);
env->SetIntField(object, stat_fields[i].privateDirty_field, stats[i].privateDirty);
env->SetIntField(object, stat_fields[i].sharedDirty_field, stats[i].sharedDirty);
+ env->SetIntField(object, stat_fields[i].sharedClean_field, stats[i].sharedClean);
}
jintArray otherIntArray = (jintArray)env->GetObjectField(object, otherStats_field);
@@ -283,6 +289,7 @@
otherArray[j++] = stats[i].pss;
otherArray[j++] = stats[i].privateDirty;
otherArray[j++] = stats[i].sharedDirty;
+ otherArray[j++] = stats[i].sharedClean;
}
env->ReleasePrimitiveArrayCritical(otherIntArray, otherArray, 0);
@@ -640,6 +647,8 @@
env->GetFieldID(clazz, stat_field_names[i].privateDirty_name, "I");
stat_fields[i].sharedDirty_field =
env->GetFieldID(clazz, stat_field_names[i].sharedDirty_name, "I");
+ stat_fields[i].sharedClean_field =
+ env->GetFieldID(clazz, stat_field_names[i].sharedClean_name, "I");
}
return jniRegisterNativeMethods(env, "android/os/Debug", gMethods, NELEM(gMethods));