我使用LibGDX框架为Android创建了一个简单的游戏。不幸的是,游戏有时会开始短暂停顿,这会破坏体验。我想这可能是由于垃圾收集所以我看了一下内存监视器:
分配的内存不断增加,从10mb增加到内存限制,然后下降到10mb。查看领先列表的堆是FinalizerReference的大幅度。
我真的不知道这是从哪里来的。我没有用finalize编写任何类,我也使用LibGDX提供的池函数来保持创建对象的数量。你实际上可以看到列表中最昂贵的Objects Spinner,它位于常数8.我已经阅读了所有其他关于类似问题的线程,但我没有找到实际的解决方案。
我很感激任何形式的帮助! 如果需要,我可以提供更多信息!
修改
答案 0 :(得分:0)
所以我解决了口吃问题。在晚安睡觉后,我决定再看一下我的渲染,结果发现ShapeRenderer我用了很多简单的形状导致了延迟。我用SpriteBatch调用替换了所有ShapeRenderer调用,编写自己绘制直线和圆的方法,它现在运行顺畅。
堆转储仍然显示FinanziererReferences占用了大量内存,虽然应用程序闲置但是口吃已经消失,但我的空间仍在增长。