在我正在研究的应用程序中调查RAM使用情况时,我一直在使用Android Studio中的内存监视器工具(可以通过工具> Android>内存监视器在Android Studio中访问)。我注意到内存监视器中报告的应用程序的RAM使用率总是远低于查看设备的RAM使用情况(可以通过设置>应用程序>运行来访问)。正如您在下面的屏幕截图中看到的那样,Memory Monitor报告大约18MB的RAM使用率(如果包含可用空间则为23MB),但该设备报告的是43MB。
为什么差异也比另一个更准确?
答案 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();
但这仅用于获取当前应用的信息。