我开发了一款libgdx
的游戏。我尝试通过以下方式尽可能降低内存消耗:
SpriteBatch
的{{3}} 当我从Android Studio
手机上运行游戏(Nexus 5x)时,我的游戏运行顺畅,内存消耗似乎确实合理:内存消耗通常低于23MB(我通过{ {3}})。但是,当我转到手机上的内存标签页(设置 - >内存 - >应用程序使用的内存)时,我看到以下内容:
size
我的游戏令人震惊的“最大内存使用”为1.2 GB 。超越任何其他应用程序。
我的问题:
答案 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.