2014-02-14 66 views
0

我知道jvm中的GC會收集對象,一旦它發現對象是弱引用的,但有人說它可能花了幾次gc讓jvm找到弱引用對象,我真的不明白它,任何人都可以解釋它,或者告訴我這是真的嗎?謝謝!爲什麼需要幾次gc才能找到弱參考?

回答

0

是的,它需要一段時間才能銷燬對象。我不知道Java WeakReference有什麼問題或者它對性能的影響。

  • 可能導致附加的垃圾收集
  • 進行循環時,可以不知道。垃圾收集器在自己的後臺線程週期中工作。
  • 在WeakReferences管理取決於執行JRE(如一切)的,也見Cost of using weak references in Java
  • 有沒有辦法在Java和其他高級語言如C#例如手動銷燬對象。垃圾收集器做那件事。循環結束並銷燬沒有參照的對象(即強參照)。弱引用不會阻止垃圾收集器收集對象。參考類型之間的區別解釋如下:here on StackOverflow

    沒有辦法觸發收集週期。您可以通過System.gc()戳垃圾收集器,但它不會立即執行並「需要多次」。

    0

    所有實際用途的垃圾收集都是不確定的。你根本無法預測它什麼時候會清理一些東西,如果它會導致你的應用暫時停頓等。大多數表現的很好。你不應該依賴基礎的gc動作或終結器。

    相關問題