一、不要每次都建立一个相同功能的新对象:数据库
- 极端反例:每次在堆上建立一个对象,第一次会在常量池建立字符串新对象

- 改进后:每次栈上建立引用,第一次会在常量池建立字符串新对象
- 第一次指同一台虚拟机的第一次

二、静态工厂优于构造器的很重要缘由:安全
举例:性能


使用静态初始化器改进后,性能大幅度提高:优化
- final 静态域,会被做为常量使用
- Calendar 建立代价很高
- 能够进一步优化到延时初始化
- 可是不建议:缘由是方法实现复杂、没法使性能显著 提升超过 现有水平

三、像适配器这样的场景,性能提高不明显对象
- 适配器把功能委托给后备对象,为后备对象提供一个能够替代的接口
- 不须要建立多个适配器实例
四、Map接口的 keySet() 方法每次都返回相同的 Set实例接口
五、自动封装内存
- 容许基本类型和封装基本类型混用,自动装箱 拆箱
- 两种类型语义上模糊,可是性能上差距明显
- 优先使用基本类型,避免无心识的自动装箱
- 每次往Long sum中添加 long 类型时,建立一个Long实例
- 下述代码把 Long sum 改成long(基本类型)
- 性能从40秒加,减小到6秒加

六、本条并没有 让咱们避免建立对象的意思字符串
- 缘由是:小对象的建立和回收一般比较廉价
- 并且,建立附加对象能提高代码的清晰性、简洁性和功能性
- 是件好事
七、使用重量级对象时,才建议使用对象池虚拟机
- 典型事例:数据库链接池
- 轻量级对象池得不偿失:代码变乱、增长内存负担
- JVM优化很容易使 不建立轻量级对象池的性能 优于 建立
八、保护性拷贝<39条>遍历
- 在重用对象付出的代价远大于 建立新对象时,保护性拷贝
- 没进行保护性拷贝,可能致使潜在错误或安全漏洞