例如,如果我有一个实现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块,以确保在完成处理后调用该方法。

07-24 09:34