首页 > 解决方案 > android 如何动态获取应用程序的内存使用情况,例如使用 android studio profiler 显示

问题描述

使用getRuntimeMemoryUsage()获取内存使用情况Runtime.getRuntime()

但是当与探查器比较时找不到匹配项。

即分析器内存的java 显示22MB 但代码getRuntimeMemoryUsage() 返回12MB。

如何获取探查器中显示的内存使用情况?

fun getRuntimeMemoryUsage(): Long {

        //calculate memory usage of currently running application:

        var freeSize = 0L
        var totalSize = 0L
        var usedSize = 0L
        try {
            val runtime = Runtime.getRuntime()
            runtime.gc()
            freeSize = runtime.freeMemory() / 1048576L
            totalSize = runtime.totalMemory() / 1048576L
            usedSize = (totalSize - freeSize)

            val maxHeapSizeInMB = runtime.maxMemory() / 1048576L

        } catch (e: Exception) {
            e.printStackTrace()
        }

        return usedSize
    }

标签: android-memoryandroid-profiler

解决方案


android studio 分析器使用几种不同的方法来捕获应用程序的内存。最常用的方法是轮询“dumpsys meminfo”。然而,这对于想要在 Playstore 中发布的应用程序来说是不可行的。


推荐阅读