Memory leaks TextureAttribute.createDiffuse是否泄漏内存?
我正在使用此代码在材质上设置纹理。在androidstudio的Memory选项卡下,我注意到每次代码运行时内存都会增加。在我看来,内存泄漏或内存管理不好。如何在运行时将纹理反复设置为材质,以便正确管理内存 代码:Memory leaks TextureAttribute.createDiffuse是否泄漏内存?,memory-leaks,libgdx,Memory Leaks,Libgdx,我正在使用此代码在材质上设置纹理。在androidstudio的Memory选项卡下,我注意到每次代码运行时内存都会增加。在我看来,内存泄漏或内存管理不好。如何在运行时将纹理反复设置为材质,以便正确管理内存 代码: 问题是每次计时器执行任务时,您都在创建一个新的纹理是可弃置的,因此,不再使用时需要弃置。在上面的代码中,您没有保留对已创建的纹理的引用,因此您无法处理这些纹理。这会造成内存泄漏 解决这一问题的一个方法是使用一个管理器,而不是自己管理资产。本课程旨在减轻您管理资产内存消耗的工作量 另一
问题是每次
计时器执行任务时,您都在创建一个新的<代码>纹理
是可弃置的
,因此,不再使用时需要弃置。在上面的代码中,您没有保留对已创建的纹理的引用,因此您无法处理这些纹理。这会造成内存泄漏
解决这一问题的一个方法是使用一个管理器,而不是自己管理资产。本课程旨在减轻您管理资产内存消耗的工作量
另一种解决方案是保留对已创建的Texutres
的引用,并确保它们在不需要时被正确地处理
就我个人而言,我会选择第一种解决方案。一开始它可能很吓人,但一旦掌握了AssetsManager
,它在管理您的资产方面确实做得很好
Timer.schedule(new Timer.Task() {
@Override
public void run() {
materials.get(5).set(TextureAttribute.createDiffuse(new Texture("400px/"+mat5+".png")));
}
}, delay2);