TextureAttribute.createDiffuse泄漏内存?

时间:2015-12-31 11:53:41

标签: memory-leaks libgdx

我正在使用此代码在材质上设置纹理。在Android studio的Memory选项卡下,我注意到每次运行此代码时内存都会增加。看起来像内存泄漏或内存管理不好给我。我应该如何在运行时重复设置纹理到材质,以便正确管理内存。

代码:

Timer.schedule(new Timer.Task() {
                @Override
                public void run() {
                    materials.get(5).set(TextureAttribute.createDiffuse(new Texture("400px/"+mat5+".png")));

                }
            }, delay2);

1 个答案:

答案 0 :(得分:1)

问题是每次Timer执行Task时,您都会创建新的TextureTexturesDisposable,因此,不再使用时需要disposed。在上面的代码中,您没有保留对创建的Textures的引用,因此您失去了dispose的能力。这会造成内存泄漏。

对此的一个解决方案是使用AssetManager而不是自己管理资产。本课程旨在帮助您减轻管理资产内存消耗的工作量。

另一种解决方案是保留对已创建的Texutres的引用,并在不需要时确保它们正确disposed

就个人而言,我会选择第一个解决方案。一开始可能会令人生畏,但是一旦掌握了AssetsManager,它就会很好地管理你的资产。