1. 程式人生 > >effectiveJava(5)消除過期的對象引用

effectiveJava(5)消除過期的對象引用

cti 程序 好的 hash 周期 對象 hashmap 引用 AS

  過期引用:永遠也不會再被解除的引用。

  內存泄漏常見來源:

    一、類自己管理內存時,程序員應該警惕內存泄漏問題。一旦元素被釋放掉,則該元素中包含的任何對象引用都應該被清空。

    二、緩存。一旦對象引用放到緩存中,就很容易被遺忘掉,從而使得對象不再有用之後的很長一段時間內仍然留在緩存中。實現緩存時,只要在緩存之外存在對某個項的鍵的引用

  該項就有意義,那麽就可以用WeakHashMap代表緩存;當緩存中的項過期之後,他們會被自動刪除。只有當所要的緩存項的生命周期是由該鍵的外部引用而不是由值決定時,WeakHashMap才有用處

    三、監聽器和其他回調。

    由於內存泄漏通常不會表現成明顯的失敗,所以它們可以在一個系統中存在很多年。一般只有通過仔細檢查代碼,或者借助於Heap剖析工具才能發現內存泄漏的問題。因此,如果能夠在內存泄漏發生之前就知道

如何預測此類問題,並阻止發生,是最好的。

effectiveJava(5)消除過期的對象引用