例如,如果我有一个实现Disposable的对象的实例,那么说它是
BitmapFont someFont = new BitmapFont();
根据LibGDX文档,一旦不再需要该对象,我应该立即调用dispose()方法。但是,如果决定将新字体分配给相同的变量,该怎么办:
someFont = new BitmapFont();
我应该在这样的分配之前先调用dispose(),以防止内存泄漏吗?换句话说,哪个变体是正确的
BitmapFont someFont = new BitmapFont();
//do something
someFont.dispose();
someFont = new BitmapFont();
//do something else
someFont.dispose();
或这个:
BitmapFont someFont = new BitmapFont();
//do something
someFont = new BitmapFont();
//do something else
someFont.dispose();
我目前认为第一个是正确的,并且似乎dispose()的行为就像C ++中的析构函数一样,只是它不是自动调用的。
那么,哪个版本实际上是正确的?
最佳答案
您的变量只是一个指向给定对象的指针,而不是一个包含所有它曾经包含的引用的总体容器。如果要遵循第二个代码示例,则只在第二个BitmapFont实例上调用Dispose,而不是第一个。您的第一个模式在技术上是正确的,并且您还希望考虑try / finally块,以确保在完成处理后调用该方法。