重启时,Libgdx游戏越来越慢

时间:2013-08-28 09:59:48

标签: java performance memory-leaks libgdx

我正在测试我的游戏,但我遇到了问题。我的主要游戏类是在用户死亡时重新启动(而不是整个应用程序),但每当它重新启动时,它只会运行得越来越慢。我在考虑可能的内存泄漏。

我正在使用setScreen(Screen sc)方法从屏幕切换到屏幕。我也在dispose()方法中清理,我找不到原因。

所以我要求你指点我可能会导致我的应用程序在重启时放慢速度?

它可能是ShapeRenderer,因为我在循环中渲染了大量的形状 - 也许这就是问题所在?但是这个应用程序非常完美,我称之为主游戏类的新实例。

发布它的代码太多了,所以我很抱歉大量的文字。我真的希望你能以某种方式指出我可能出错的地方!

3 个答案:

答案 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