Искал и до сих пор не получил очень четкий ответ.
Перепробовав две маршрутизации, одна использует Debug.MemoryInfo (), а другая - ActivityManager. Кажется, что оба получают использование памяти, но отличается
Как правильно проверить использование памяти моим приложением?
1 возвращает 49436 (кажется более согласованным для разных устройств)
val appMemory: Double
get() {
val memInfo = Debug.MemoryInfo()
Debug.getMemoryInfo(memInfo)
var res = memInfo.totalPrivateDirty.toDouble()
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT)
res += memInfo.totalPrivateClean.toDouble()
return res
}
2 возвращает 113695 кб
fun otherMemoryFunc() {
val context = this.context.applicationContext
val activityManager = context.getSystemService(Context.ACTIVITY_SERVICE) as ActivityManager ?: return
ThreadPoolExecutorSingleton.getInstance().execute {
val runningAppProcesses = activityManager.runningAppProcesses
val it = runningAppProcesses.iterator()
while (it.hasNext()) {
val runningAppProcessInfo = it.next() as ActivityManager.RunningAppProcessInfo
if (runningAppProcessInfo.processName == context.getPackageName()) {
val pids = intArrayOf(runningAppProcessInfo.pid)
val memoryInfo = activityManager.getProcessMemoryInfo(pids)
if (memoryInfo != null && memoryInfo.isNotEmpty()) {
Log.i("+++", "+++ memoryInfo[0].totalPss: ${memoryInfo[0].totalPss}")
} else {
Log.e("+++", "+++ !!! no memoryInfo")
}
break
}
}
}
}