例如,如果我有一个实现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 ++中的析构函数一样,除了它不是自动调用的事实。
那么,哪个版本实际上是正确的?
答案 0 :(得分:3)
您的变量只是指向给定对象的指针,而不是包含它所包含的所有引用的总体容器。如果您要关注第二个代码示例,则只在第二个BitmapFont实例上调用dispose,而不是第一个。您的第一个模式在技术上是正确的,并且您还需要考虑try / finally块以确保在完成后调用dispose。
答案 1 :(得分:-2)
使用第二个示例,第一个示例也是正确的,但是对第一个dispose()的调用是多余的,因为您再次使用相同的指针。 祝你好运:)
更新:
抱歉!我检查了我错了:/你需要调用第一个 dispose()函数以避免内存泄漏所以正确的例子是第一个