本机内存增加

Native Memory Increase

我有一个问题,因为在 android 文档中找不到任何相关内容。

当我在 Android Studio 中 运行 一个简单的应用程序(来自 Android studio 的通用项目或 google 示例应用程序)时,我检查初始本机内存。让我们说它的 17 MB。如果我多次更改方向,则本机内存将变为 40mb,如果我强制执行 GC,内存将降至 23-25。如果我这样做几次,在 GC 之后内存将保持在 23-25。那么这些额外的 MB 从何而来?

当然没有内存泄漏,因为我检查过,因为本机内存会一直上升。

Does android keep some sort of cache?

此外,如果我在应用程序中使用库 e.x retrofit2,滑动 e.t.c 本机内存将增加,但在初始本机内存 +20mb 的限制内。

日志堆:

 Log.d("tag", "debug. =================================");
                Log.d("tag", "debug.heap native: allocated " + df.format(allocated) + "MB of " + df.format(available) + "MB (" + df.format(free) + "MB free)");
                Log.d("tag", "debug.memory: allocated: " + df.format(new Double(Runtime.getRuntime().totalMemory() / 1048576.0)) + "MB of " + df.format(new Double(Runtime.getRuntime().maxMemory() / 1048576.0)) + "MB (" + df.format(new Double(Runtime.getRuntime().freeMemory() / 1048576.0)) + "MB free)");

免责声明:以下内容适用于普通 JVM,我不确定 Android 的行为是否相同。

类(字节码)按需加载,但从不卸载。因此,当您的应用程序启动时,您可能还没有加载所有 类,只是启动所需的最低限度。应用程序使用的次数越多,加载的 类 就会越多,直到您拥有所有应用程序。