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