Effective Java 第二章

避免创建不必要的对象

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

消除过期对象的引用

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

避免使用终结方法

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

@Override protected void finalize() throws Throwable{
          try{
                ...//finalize subclass state
          }finally{
                super.finalize();
          }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 第2章 创建和销毁对象 第1条:考虑用静态工厂方法代替构造器 静态工厂方法,只是一个返回类的实例的静态方法。 示例...
    进击的小鹿阅读 2,865评论 0 1
  • 创建和销毁对象时 1. 考虑用静态工厂方法代替构造器 1.1 优点 静态工厂方法有名称 不必重复创建新对象 可以返...
    ktdroid阅读 1,769评论 0 0
  • 第一条:考虑静态工厂方法代替构造器 静态工厂方法的优势: 有名称(例子中的probablePrime) 不必每次调...
    SherlockMoon阅读 2,472评论 0 0
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 32,885评论 18 399
  • 中国人的性情是总喜欢调和折中的,譬如你说,这屋子太暗,须在这里开一个窗,大家一定不允许的。但如果你主张拆掉屋顶他们...
    什么都要取名字阅读 1,819评论 0 0

友情链接更多精彩内容