例如,如果我有一个对象的实例,它实现了 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,而不是对第一个实例调用 dispose。您的第一个模式在技术上是正确的,您还需要考虑 try/finally block ,以确保在完成后调用 dispose。
关于java - 如何正确使用dispose()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33325285/