Extend getPssPid to report itemized memtrack values

Currently getPssPid includes memtrack HAL reported values in the pss
calculation. This makes it impossible to get these values separately.
Extend this interface to include itemized memtrack values.

Bug: 165832481
Test: dumpsys meminfo
Signed-off-by: Suren Baghdasaryan <surenb@google.com>
Change-Id: Ieb7e1b79ad8ecae6023338d9992467952558e2bd
This commit is contained in:
Suren Baghdasaryan
2021-02-10 08:45:05 -08:00
parent 9379af7c56
commit c17cbb303c
2 changed files with 11 additions and 1 deletions

View File

@@ -1902,7 +1902,8 @@ public final class Debug
* Retrieves the PSS memory used by the process as given by the smaps. Optionally supply a long
* array of up to 3 entries to also receive (up to 3 values in order): the Uss and SwapPss and
* Rss (only filled in as of {@link android.os.Build.VERSION_CODES#P}) of the process, and
* another array to also retrieve the separate memtrack size.
* another array to also retrieve the separate memtrack sizes (up to 4 values in order): the
* total memtrack reported size, memtrack graphics, memtrack gl and memtrack other.
*
* @return The PSS memory usage, or 0 if failed to retrieve (i.e., given pid has gone).
* @hide

View File

@@ -540,6 +540,15 @@ static jlong android_os_Debug_getPssPid(JNIEnv *env, jobject clazz, jint pid,
jlong* outMemtrackArray = env->GetLongArrayElements(outMemtrack, 0);
if (outMemtrackArray != NULL) {
outMemtrackArray[0] = memtrack;
if (env->GetArrayLength(outMemtrack) >= 2) {
outMemtrackArray[1] = graphics_mem.graphics;
}
if (env->GetArrayLength(outMemtrack) >= 3) {
outMemtrackArray[2] = graphics_mem.gl;
}
if (env->GetArrayLength(outMemtrack) >= 4) {
outMemtrackArray[3] = graphics_mem.other;
}
}
env->ReleaseLongArrayElements(outMemtrack, outMemtrackArray, 0);
}