Как правильно использовать память моего приложения? - PullRequest
0 голосов
/ 10 января 2019

Искал и до сих пор не получил очень четкий ответ. Перепробовав две маршрутизации, одна использует 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
            }
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...