【问题标题】:Android Application Memory Usage with Google Maps & Memory Limits带有 Google 地图和内存限制的 Android 应用程序内存使用情况
【发布时间】:2019-03-23 01:58:46
【问题描述】:

我对编程比较陌生,并且正在构建一个用于练习/娱乐的应用程序,但我无法理解 Android 中的内存使用情况(即使经过 12 小时的研究)。我使用 Google 地图创建了一个 Android 应用,但注意到即使在强制垃圾收集和检查内存泄漏之后,Android Studio 的内存分析器仍显示出很高的内存使用率(总共大约 90-120MB)。

我很困惑。多个网站声明每个 Android 应用程序都分配了有限的内存量。我读过旧设备倾向于分配 16MB,而新设备倾向于分配 32MB(取决于屏幕尺寸/分辨率)。

  • 这个内存使用有问题吗(Android Studio 上大约 100 MB 内存分析器)?
  • 谁能解释一下应用程序的内存 限制(上面提到的 16/32MB 限制)与显示的内容有关 Android 的内存分析器?
  • 当我运行 来自 Android Studio 的应用程序(也许我正在开发 b/c)?
  • 内存限制是否只适用于不能被垃圾回收的东西?
  • 内存限制是否不适用于 Google 地图片段(因为 Google 运行 Android)?

根据我的阅读,分析器可以显示与应用程序不直接相关的内存使用情况,但这似乎无法解释分配内存限制与分析器显示的内容之间的差异。

当我试图进一步了解差异的来源时,我发现 Google 的开源圣诞老人追踪器应用程序显示大约 90MB 的内存使用量。我倾向于认为这是正常的内存使用量,可能是因为该应用使用了 Google 地图。

【问题讨论】:

    标签: android google-maps memory


    【解决方案1】:

    内存分析器代码、Java 堆等中有不同的内存池。对您的情况重要的是 Java 堆。这就是有限的。 32 MB 对于现代设备来说是一个很小的值,如今它更接近 100 MB。 16 MB 将是 2011 年左右的样子。如果过去 7 年制造的任何设备都这么低,我会感到非常惊讶。

    该限制将被强制执行,但无论您的模拟器设置如何,它都会被强制执行。我不知道它是什么。它将包括 Google 地图片段,它将包括存储在 Java 堆上的所有内存。

    【讨论】:

      猜你喜欢
      • 2014-11-08
      • 2012-11-12
      • 2011-03-09
      • 2023-03-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多