1. 程式人生 > >《Effective java》讀書筆記-(三)

《Effective java》讀書筆記-(三)

java強大之處可以幫助我們管理記憶體,並不是意味著,程式猿可以放棄記憶體的管理,同樣需要我們手動管理記憶體。不然的話,出現記憶體洩漏,十分影響效能。
什麼事記憶體洩漏呢?簡單點說,就是一個失去引用的物件,沒有及時回收其記憶體,以致該物件永遠不會回收,也許你覺得出現這樣的錯誤,無關緊要,可是你要想到,你在此處出現了這樣的失誤,可能在其他地方也會忽略,需要及時的清理過期引用。
解決的方式,一種當然是及時釋放記憶體。比如從棧中pop一個物件,就立即將該物件的記憶體清除,再返回棧頂物件。另一種方式是使該物件結束於生命週期。此種方式在android中很常見,比如當前activity中的context物件。
造成記憶體洩漏,還來源於快取,物件存放於快取中,容易遺忘,可能長時間不使用,仍存在快取中。可以啟動一條後臺執行緒來完成清除快取,也可以在新增新條目的時候清理舊的快取。
另外記憶體洩漏常見來源是監聽器和其他回撥。某個api註冊了,沒有顯示的取消註冊,久而久之,就會積聚。解決方式是使用弱引用,當記憶體無論充足與否時候,會回收記憶體。