繁体   English   中英

如何正确使用dispose()?

[英]How to use dispose() properly?

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

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

更新:

不好意思! 我检查了我错了:/您需要调用第一个dispose()函数以避免内存泄漏, 因此第一个示例就是正确的示例

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM