避免创建不必要的对象
优先考虑使用基本类型而不是装箱类型,要当心无意识的自动装箱
消除过期对象的引用
一旦对象引用过期,要清空这些引用
缓存是内容泄漏的另一个来源,适当的时候使用WeakHashMap代表缓存(只有要缓存项的生命周期由外部引用而不是由值来决定时,才有用.)
监听器和其他回调是内存泄漏的第三个来源,例如你实现了一个API,客户端在这个API在哦好嗯注册回调,却没有显式地取消注册,除非你采取某些动作,否则它们就会聚集.确保回调立即被当作垃圾回收就是只保存它们的弱引用.
避免使用终结方法
终结方法链不会被自动执行,如果类有终结方法,并且子类覆盖了终结方法,子类的终结方法必须手动调用超类的终结方法.
@Override protected void finalize() throws Throwable{
try{
...//finalize subclass state
}finally{
super.finalize();
}
}
网友评论