1、使用带缓冲的 I/O
使用不带缓冲的I/O,一些方法会引发大量的系统调用,如InputStream.read()。在解析输入时,这是很常见的代码,例如从网络传递的命令或者从磁盘读取的配置数据。
2、尽量避免new
垃圾回收通常不是一个严重的性能开销。但是new操作引发的Java虚拟机内部的同步机制会使得多线程的应用程序出现竞争锁现象。有些时候通过重用byte数组,或者重用那些带有重置状态方法的对象可以避免new。
3、本地方法(native methods)真的很快
这听起来很傻,我听说调用一个本地方法的开销很高,所以小的java方法会更快。错!在我的测试场景下,我用纯java实现了System.arraycopy,然后用不同大小的数组和System.arraycopy比较。随着数组大小的不同,本地方法(原来的)要快一个数量级。本地方法的开销可能比较高,但相对于解析字节码它还是快。
4、String操作很快
使用x + y (这里x和y都是String)比对两个string执行getBytes然后根据byte数组创建一个新String要快。然而,String操作隐含着大量的new操作。
5、InetAddress.getHostAddress()包含了大量的new操作。它会创建大量的中间字符串来返回host地址。如果可能,避免使用它。
原文地址:http://java.sun.com/developer/technicalArticles/Programming/Performance/