Android Studio中的内存监视器报告的RAM使用率与设备不同

时间:2015-01-24 20:36:04

标签: android memory-management android-studio

在我正在研究的应用程序中调查RAM使用情况时,我一直在使用Android Studio中的内存监视器工具(可以通过工具> Android>内存监视器在Android Studio中访问)。我注意到内存监视器中报告的应用程序的RAM使用率总是远低于查看设备的RAM使用情况(可以通过设置>应用程序>运行来访问)。正如您在下面的屏幕截图中看到的那样,Memory Monitor报告大约18MB的RAM使用率(如果包含可用空间则为23MB),但该设备报告的是43MB。

为什么差异也比另一个更准确?

Memory Monitor

device

2 个答案:

答案 0 :(得分:8)

我怀疑内存监视工具正在与dalvik虚拟机讨论Java代码所做的堆分配,而设备管理器正在显示整个进程用于内存的内容。因此,第一个不包括虚拟机本身(或其文本和库)使用的开销或内存,或任何堆外分配(有时本机代码可以分配不直接对VM可见的内存)。 / p>

请参阅https://developer.android.com/tools/debugging/debugging-memory.html#ViewingAllocations并尝试运行命令:

adb shell dumpsys meminfo <package_name>

更准确地分析应用程序的运行时内存使用情况。

答案 1 :(得分:0)

我已经测试了Android Studio的内存监视器Allocated可以通过编程方式实现这一点:

long allocatedMemory = Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory();

但这仅用于获取当前应用的信息。