Java语言本身也有很多优化技巧可以使用,比较常用的如使用StringBuilder,优化自定义hasCode(equals()toString()方法,优先使用原始数据类型,不在循环中使用try.catch,copy时使用System.arraycopy)命令,除了这些通用技巧外,我们再介绍-些优化方法,分述如下。
(1)减少编码
Java的编码运行比较慢是Java的-大硬伤,在很多场景下只要涉及字符串的操作(如输人输出操作、1O操作)都比较耗CPU资源,不管它是磁盘1O还是网络I/O,因为都需要将字符转换成字节,而这个转换必须编码。因此,减少编码就可以大大提升性能。那么如何才能减少编码呢?例如,在网页输出时可以直接进行流输出,即用resp.getOutpusStream0)写数据,把一些静态的数据提前转化成byte,等到真正往外写的时候再直接用OutputStream(写,就可以减少静态数据的编码转换。此外,很多存储系统直接存储成字节也是为了减少字符的编码。
(2)使用局部变量
在很多情况下,程序员为了更方便地一次处理一个请求,一般会创建一-堆对象,再把这些对象一直传递下去,直到请求执行完成,才会销毁对象。这种操作会导致对象长时间不能回收,降低内存的使用率,所以要鼓励更多地使用局部变量。例如,调用方法时传递的参数以及在调用中创建的临时变量都保存在栈中,这样速度较快;其他变量像静态变量、实例变量等,都在堆中创建速度较慢。栈中创建的变量,随着方法的运行结束,这些内容就没有了也不需要额外的垃圾回收。
(3)减少方法调用
经常看到一些代码如ob.getXXX0,它的作用只不过是获取某个变量对应的值,但是在一段代码中却需要多次调用一这种操作完全没有必要,可以把这个方法调用的返回结果用一个局部变量保存下来,然后直接用这个局部变量就可以了,这样能减少方法调用的次数(因为每一次方法调用JVM都要创建方法栈)。其他一些经验如下。
●把对象作为HashMap的key;
●web.xml配置版本信息可以减少启动时annotation的扫描时间;
●Logger创建没有使用static修饰符导致线程阻塞;
●少用Thread.getStackTraceO;
●网站建设正则运算尽量Cache。
>>> 查看《Java特性的优化》更多相关资讯 <<<
本文地址:http://nlpc.cn/news/html/4474.html