如何正确使用 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() 函数以避免内存泄漏 所以正确的例子是第一个
例如,如果我有一个实现 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() 函数以避免内存泄漏 所以正确的例子是第一个