1、重用对象。
一般来说重用对象即快速又流行。String s = new String (“ss”)千万不用使用这种方式,String s = “ss”,只用了一个实例,而不是每次执行的时候创建了一个新的实例,并且可以使用到了字符串的常量池技术。对于提供了静态工厂方法和构造器的不可变类,优先使用静态工厂方法而不是构造器,避免创建不必要的对象。例如Boolean.valueOf(String)总是优先构造器Boolean(String),因为前者可以重用对象。
2、用静态代码块初始化一些不可变实例域而不是每次调用的时候创建新的实例域。
通过延迟初始化的方式延迟初始化,当用到的时候进行初始化,但一般不见这么做。这样做会使方法实现的更复杂, 无法将性能显著提高到或超过现有水平。
其他情况的避免重复对象不明显了,例如适配器情况下。
3、优先使用基本数据类型而不是装箱数据类型,要避免无意识的自动装箱操作。
4、误区:创建对象的代价昂贵,尽可能的避免创建对象。相反小对象的创建回收非常低廉,通过附件对象创建提升程序的清晰逻辑和功能,这通常是好事。
5、通过维护自己的对象池避免创建对象并不是好的做法,除非是类似数据库连接等重量级的。数据库连接代价昂贵而且重用这些对象非常又意义,所以要使用池技术。但是就一般而言,维护对象池必定会把代码弄的乱七八糟,同时增加内存占用。现代的jvm具有高度优化的垃圾回收池,其性能就会很快超过轻量级的对象池性能。
6、误区2 当你应该重用现有对象的时候,请不要创建新的对象;当你应该创建对象的时候,请不要重用现有的对象。这都是对的,后面的和保护性拷贝有关。