我对编程相对较新,正在为练习/娱乐构建应用程序,但我无法理解Android中的内存使用情况(即使经过12个小时的研究)。我已经使用谷歌地图创建了一个Android应用程序,但是注意到即使在强制垃圾收集和检查内存泄漏之后,Android Studio的内存分析器也显示出高内存使用率(总共大约90-120MB)。
我很困惑。多个网站声明每个Android应用程序都分配了有限的内存。我读过旧设备倾向于分配16MB,而较新设备倾向于分配32MB(这取决于屏幕尺寸/分辨率)。
根据我的阅读,分析器可以显示与应用程序没有直接关系的内存使用情况,但这似乎并不能解释分配内存限制与分析器显示的内容之间的差异。
当我试图了解更多关于差异的来源时,我看到Google的开源Santa Tracker App显示了大约90MB的内存使用量。我倾向于认为这是正常的内存使用量,因为该应用程序使用谷歌地图。
内存分析器代码,Java堆等中有不同的内存池。对您的案例很重要的是Java堆。那是有限的。 32 MB对于现代设备来说是一个很小的价值,它现在更接近100MB。 16 MB将是2011年左右的样子。如果过去7年制造的任何设备都那么低,我会非常惊讶。
该限制将被强制执行,但无论您的模拟器设置为何,都会强制执行。我不知道它是什么。它将包括Google Maps片段,它将包括存储在Java堆上的所有内存。