避免創(chuàng)建不必要的對象
優(yōu)先考慮使用基本類型而不是裝箱類型,要當(dāng)心無意識的自動裝箱
消除過期對象的引用
一旦對象引用過期,要清空這些引用
緩存是內(nèi)容泄漏的另一個來源,適當(dāng)?shù)臅r(shí)候使用WeakHashMap代表緩存(只有要緩存項(xiàng)的生命周期由外部引用而不是由值來決定時(shí),才有用.)
監(jiān)聽器和其他回調(diào)是內(nèi)存泄漏的第三個來源,例如你實(shí)現(xiàn)了一個API,客戶端在這個API在哦好嗯注冊回調(diào),卻沒有顯式地取消注冊,除非你采取某些動作,否則它們就會聚集.確保回調(diào)立即被當(dāng)作垃圾回收就是只保存它們的弱引用.
避免使用終結(jié)方法
終結(jié)方法鏈不會被自動執(zhí)行,如果類有終結(jié)方法,并且子類覆蓋了終結(jié)方法,子類的終結(jié)方法必須手動調(diào)用超類的終結(jié)方法.
@Override protected void finalize() throws Throwable{
try{
...//finalize subclass state
}finally{
super.finalize();
}
}