如何正确使用 dispose()?

How to use dispose() properly?

例如,如果我有一个实现 Disposable 的对象实例,假设它是

BitmapFont someFont = new BitmapFont();

根据 LibGDX 文档,我应该在对象不再需要时立即调用 dispose() 方法。但是,如果决定将新字体分配给同一个变量怎么办:

someFont = new BitmapFont();

我应该在这样的赋值之前先调用 dispose() 以防止内存泄漏吗?也就是说,哪个变体是正确的,this

    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 块以确保在完成后调用 dispose 。

继续你的第二个例子,第一个例子也是正确的,但是对第一个 dispose() 的调用是多余的,因为你再次使用同一个指针。 祝你好运:)

更新:

对不起!我检查我错了:/ 你需要调用第一个 dispose() 函数以避免内存泄漏 所以正确的例子是第一个