我正在测试我的游戏,但我遇到了问题。我的主要游戏类是在用户死亡时重新启动(而不是整个应用程序),但每当它重新启动时,它只会运行得越来越慢。我在考虑可能的内存泄漏。
我正在使用setScreen(Screen sc)方法从屏幕切换到屏幕。我也在dispose()方法中清理,我找不到原因。
所以我要求你指点我可能会导致我的应用程序在重启时放慢速度?
它可能是ShapeRenderer,因为我在循环中渲染了大量的形状 - 也许这就是问题所在?但是这个应用程序非常完美,我称之为主游戏类的新实例。
发布它的代码太多了,所以我很抱歉大量的文字。我真的希望你能以某种方式指出我可能出错的地方!
答案 0 :(得分:4)
可能对你有帮助的东西。 使用jmap(http://docs.oracle.com/javase/7/docs/technotes/tools/share/jmap.html)。 jmap显示jvm当前保存的对象实例。只需制作一个可运行的游戏罐,启动游戏,检查jmap,稍微死掉然后再次检查jmap。也许你看到纹理对象的增加,因此你可能没有清理其中的一些(如果你使用的是AssetManager,很容易忘记一些)。
答案 1 :(得分:4)
如果你看ScoreScreen,你会发现你没有处理你加载的纹理。
我强烈建议您查看有关libgdx的Asset Manager教程和指南,以便将来避免这种情况。
编辑:
旁注,你的代码一点也不差,所以不要为它感到羞耻。事实上,我会说它比平均水平好:)。
答案 2 :(得分:1)
使用跟踪内存分配的工具比代码审查更有用。
使用Eclipse DDMS内存跟踪器:http://developer.android.com/tools/debugging/ddms.html#alloc