【发布时间】:2015-08-05 08:35:17
【问题描述】:
我编写了一个由多个屏幕组成的游戏,每次我需要一个新屏幕时我都会使用代码
dispose();
game.setScreen(new GameScreen(game));
在 dispose 方法中,我调用了每个资产的 dispose 方法,例如 Textures 等。
我还使用资产管理器来加载游戏画面所需的资产。在那种情况下,当我关闭游戏画面时,我也会调用AssetManager.clear()。
现在我开始游戏时只有菜单屏幕,使用的内存约为20MB,然后在游戏播放屏幕中达到212MB,当我回到菜单屏幕时,处置AssetManger后,我仍然有186MB。 主要问题是,如果我开始一个新的游戏画面,内存会达到 320MB,所以在一些游戏画面之后,游戏会达到 700MB!
我的代码有什么问题?
【问题讨论】:
-
您如何测量内存使用情况?你在检查之前做 GC 吗?
-
我在活跃的应用下查看我的安卓手机的内存值
-
在得出任何关于内存使用的结论之前,您应该进行一次 GC,因为堆中可能有死对象。
标签: java memory-leaks garbage-collection libgdx dispose