Effective Java 第二章

避免创建不必要的对象

优先考虑使用基本类型而不是装箱类型,要当心无意识的自动装箱

消除过期对象的引用

一旦对象引用过期,要清空这些引用
缓存是内容泄漏的另一个来源,适当的时候使用WeakHashMap代表缓存(只有要缓存项的生命周期由外部引用而不是由值来决定时,才有用.)
监听器和其他回调是内存泄漏的第三个来源,例如你实现了一个API,客户端在这个API在哦好嗯注册回调,却没有显式地取消注册,除非你采取某些动作,否则它们就会聚集.确保回调立即被当作垃圾回收就是只保存它们的弱引用.

避免使用终结方法

终结方法链不会被自动执行,如果类有终结方法,并且子类覆盖了终结方法,子类的终结方法必须手动调用超类的终结方法.

@Override protected void finalize() throws Throwable{
          try{
                ...//finalize subclass state
          }finally{
                super.finalize();
          }
}

你可能感兴趣的:(Effective Java 第二章)