libgdx 游戏非常高 "Maximum memory use"

Very high "Maximum memory use" for libgdx game

我用 libgdx 开发了一款游戏。我尝试通过执行以下操作来尽可能降低内存消耗:

  1. 尽可能使用 Pooling
  2. 限制SpriteBatchsize

当我从 Android Studio 运行 我的 phone (Nexus 5x) 上玩游戏时,我的游戏 运行 很流畅,看来内存消耗确实合理: 内存消耗通常低于 23MB(我通过 memory monitor 看到了这一点)。但是,当我转到 phone 上的内存选项卡(设置 --> 内存 --> 应用程序使用的内存)时,我看到以下内容:

我的游戏 "Maximum memory use" 1.2 GB 令人震惊。远远高于任何其他应用程序。

我的问题:

您混淆了本机内存(RAM,如屏幕截图所示)和VM 内存

在内存监视器中,您只能看到堆(因此分配给您的应用所在的 VM 的内存 运行),但看不到实际的 RAM。此最大堆大小受系统限制(参见 示例)。

Libgdx 通过 JNI 使用 OpenGL,因此也直接使用 RAM。

要调查您的 RAM 使用情况,您需要内存监视器以外的其他工具,例如: How do I discover memory usage of my application in Android?

我不知道你的应用程序,但 1.2GB 似乎有点高。如果您不使用 Texture Atlases & the Texture Packer, it's probably a good place to start optimizing. Also be sure to dispose all Disposables (like BitmapFont). Here is a detailed list.