2013-03-02 63 views

回答

1

唯一原因,GC將dealocate您的實例的是,如果整個應用程序被破壞......

+1

當整個應用程序被銷燬時,GC也會被銷燬。 – 2013-03-02 16:32:08

+1

這顯然是錯誤的:考慮:static {new Object(); }這是一個單身人士,它立即收集垃圾。 – 2013-03-02 16:40:12

3

垃圾收集收集,沒有什麼指向,除非一提的是靜態對象。 Are static fields open for garbage collection?

+1

在Java中,沒有這樣的東西作爲「靜態對象」。 – 2013-03-02 16:39:39

+0

一個對象的結構不能被聲明爲靜態的,但你可以有一個靜態引用/它的實例。編輯回答說參考。 – Shellum 2013-03-02 19:37:21

+0

是啊!不過,我認爲你可以忽略靜態引用的全部內容。您的答案在逗號處完整無誤! – 2013-03-02 19:57:15

1

有很多方法來實現一個單例。最好的之一是:

public static enum My { SINGLETON; } 

不管是否是單身人士對於是否爲GCed都沒有影響。如果沒有強引用,則會對對象進行GC處理。查看它(http://weblogs.java.net/blog/2006/05/04/understanding-weak-references)。

還有一個有趣的問題。在Android中,您的應用程序無法控制它的生命週期。有可能一個流程將以您不希望的方式終止並重新創建。如果發生這種情況,靜態最終變量將被重新初始化。還有更多在這裏:

http://portabledroid.wordpress.com/2012/05/04/singletons-in-android/

相關問題