我正在使用BitmapFont,如下所示:
create(){
font = new BitmapFont(getFileResource("50.fnt"), getFileResource("50.png"),
false);
}
dispose(){
font.dispose();
}
我有几个屏幕可以加载和卸载不同大小的字体。随着时间的推移,记忆力会消失。
在花了很长时间寻找内存泄漏后,我发现这个BitmapFont类正在泄漏。我认为它是在本机内存上泄漏,因为使用Memory Analyzer没有看到泄漏。
我正在按照当前文档执行清理内存的过程。但这还不够。我还应该做些什么来确保BitmapFont释放内存?
答案 0 :(得分:2)
这可能是个错误。 Here你可以看到你的构造函数。和here非常相似。区别在于第二个设置了ownsTexture
标志。只有设置了此标志,纹理才会被处理掉。
我将创建一个问题/ PR来解决此问题,或者至少使其行为方式相同,或添加JavaDoc警告。
现在,您可以自己执行bitmapFont.setOwnsTexture(true)
来解决此问题。
答案 1 :(得分:0)
错误是libgdx代码长时间运行,所以我等不及要调用dispose了。
所以我在GLThread以外的线程(在Android上)调用屏幕上不再需要的元素
当不是来自GLThread()时,Libgdx会忽略dispose()。
在渲染上添加清理代码,使其在过时的组件堆积时运行,从而解决问题。