天天看點

消除過期的對象引用

1, 一般而言, 隻要是類自己管理記憶體,程式員就該警惕記憶體洩漏的問題

2,記憶體洩漏的另一個常見來源是 緩存

        可以用 WeakHashMap 代表緩存,當緩存中的項過期之後,它們就會自動删除。

        注: 隻有當所要的緩存項的生命周期是有該鍵的外部引用而不是由隻值決定時,WeakHashMap 才有用處

        緩存應該時不時的清楚沒用項。

    eg: 

       1, 可以有一個背景線程 (Timer  or ScheduledTreadPoolExecutor)來完成

       2. 也可以給緩存添加新的條目時順便進行清理。LinkedHashMap類利用它的removeEldestEntry 方法可是實作

       3. 對于更加複雜的緩存,必須使用java.lang.ref