libgdx游戏

时间:2016-03-01 09:08:45

标签: android memory libgdx ram

我开发了一款libgdx的游戏。我尝试通过以下方式尽可能降低内存消耗:

  1. 尽可能使用Pooling
  2. 限制SpriteBatch的{​​{3}}
  3. 当我从Android Studio手机上运行游戏(Nexus 5x)时,我的游戏运行顺畅,内存消耗似乎确实合理:内存消耗通常低于23MB(我通过{ {3}})。但是,当我转到手机上的内存标签页(设置 - >内存 - >应用程序使用的内存)时,我看到以下内容: size

    我的游戏令人震惊的“最大内存使用”为1.2 GB 。超越任何其他应用程序。

    我的问题:

    • 这个数字是什么意思?这是否意味着我的游戏一度占用了1.2 GB的RAM?
    • 如果内存监视器从未显示超过25MB的消耗,那该怎么办?
    • 如果我试图让这个数字下降,那么看到游戏确实运行顺畅吗?如果是,我该怎么做?

1 个答案:

答案 0 :(得分:2)

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

在内存监视器中,您只能看到堆(因此为运行应用程序的VM分配的内存),而不是实际的RAM。此最大堆大小受系统限制(例如,请参阅https://stackoverflow.com/a/9940415/1096567)。

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

要调查一般的RAM使用情况,您需要除Memory Monitor之外的其他工具,例如: How do I discover memory usage of my application in Android?

我不知道你的应用程序,但1.2GB似乎有点高。如果您没有使用Texture Atlases & the Texture Packer,那么它可能是开始优化的好地方。另外一定要处理所有Disposables(如BitmapFont)。 Here is a detailed list.