[英]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.