BitmapFont内存泄漏

时间:2014-06-24 03:29:51

标签: android libgdx

我正在使用BitmapFont,如下所示:

create(){
    font = new BitmapFont(getFileResource("50.fnt"), getFileResource("50.png"),
            false);
}

dispose(){
font.dispose();
 }

我有几个屏幕可以加载和卸载不同大小的字体。随着时间的推移,记忆力会消失。

在花了很长时间寻找内存泄漏后,我发现这个BitmapFont类正在泄漏。我认为它是在本机内存上泄漏,因为使用Memory Analyzer没有看到泄漏。

我正在按照当前文档执行清理内存的过程。但这还不够。我还应该做些什么来确保BitmapFont释放内存?

2 个答案:

答案 0 :(得分:2)

这可能是个错误。 Here你可以看到你的构造函数。和here非常相似。区别在于第二个设置了ownsTexture标志。只有设置了此标志,纹理才会被处理掉。

我将创建一个问题/ PR来解决此问题,或者至少使其行为方式相同,或添加JavaDoc警告。

现在,您可以自己执行bitmapFont.setOwnsTexture(true)来解决此问题。

答案 1 :(得分:0)

错误是libgdx代码长时间运行,所以我等不及要调用dispose了。

所以我在GLThread以外的线程(在Android上)调用屏幕上不再需要的元素

当不是来自GLThread()时,Libgdx会忽略dispose()。

在渲染上添加清理代码,使其在过时的组件堆积时运行,从而解决问题。