创建和销毁对象

来源:互联网 发布:宝利通mcu服务器软件 编辑:程序博客网 时间:2024/05/16 11:25


我们知道无用的对象只会影响程序的效率,都知道要避免创建不必要的对象,怎么避免才是关键。这节给了以下情况下我们要注意避免,当然不仅限书中提到了,我们应该在平时的编码过程中有意识的注意到这一点:


1. 重用不可变对象

a. 看下面代码, "stringette" 本身就是一个String对象,有重复创建了一个s 对象。(关于Java String的详细讲解,我会在后面的文章中介绍)

String s = new String("stringette")

b. 看下面代码,第一种方式其实是通过Boolean的构造器创建的,每次都会创建新的对象,第二种是通过工厂方法创建的,每次调用的时候,如果有对象则会返回,不用每次创建新的对象。

Boolean(String) Boolean.valueOf(String)

2.重用已知的不会被修改的可变对象

书中的代码我就不贴了,书中的日期对象1946和1965,实例化后就不会被修改,不需要每次使用都实例化一次,可作为静态变量重复使用。除了书中的例子,我们平时代码中的,不会被修改的对象很多,都可作为静态常量重复使用。


3.适配器模式中的适配器实例

针对给定对象的特定适配器,不需要创建多个适配器实例。虽然适配器适配的对象可能改变,但是所有返回对象在功能上是同等的。像这种比较隐含的不需要创建多个对象就需要开发人员在开发过程中多注意了。(关于适配器模式,我会在【设计模式 - 适配器模式】中详细讲解)


4.优先使用基本类型而不是装箱基本类型

装箱基本类型是对象,很多时候会无意识的自动装箱,生成了很多不必要的对象。可参考书中的例子,比较简单,我就不贴代码了。


题外话:由于现在JVM的垃圾回收器效率很高,少创建对象对程序的运行效率提升并不是很大,除非是很重量级的对象,像数据连接池等。在工作中,不要为了少创建对象做过多的维护。有可能得不偿失。