2016-04-07 51 views
1

我正在用javafx開發一個2D遊戲。一旦他們完成了部分任務,我就會從場景中移除某些元素。您認爲將這些對象中的所有變量和值設置爲0/null的好習慣就像它們被刪除一樣嗎?使用完成後,是否值得將對象設置爲null?

我知道,如果現代計算機具有GB內存,則可能不需要這樣的優化級別。但我試圖儘可能降低內存(只是個人的挑戰)。我不知道GC是否可以檢測到這些對象已經完成了它們的生命週期並且不再需要....?

+0

最好將這些對象的引用設置爲null或從集合中刪除它們,而不是將所有變量歸零。 gc會自動檢測到他們的生命週期已經結束,因爲那裏沒有對該對象的引用 – SomeJavaGuy

+4

我認爲最好是儘可能確保變量超出範圍,而不是將它們設置爲null。無論如何,如果仍然有其他引用指向同一個對象,那麼將引用設置爲null將對gc沒有影響。 –

+0

相關:http://stackoverflow.com/questions/2931170/does-variable-null-set-it-for-garbage-collection –

回答

3

從書"Effective Java"

歸零了引用應該是例外,而不是常態。消除過時引用的最好方法是讓包含引用的變量超出範圍。

+3

作者說(他的強調)**「排除引用應該是例外,而不是標準**。消除過時引用的最好方法是讓包含引用的變量超出範圍。」 –

+0

你說得對,我只是修復了我的答案。 – jchampemont

相關問題