admin管理员组

文章数量:1794759

Java代码优化方法

Java代码优化方法

代码优化的目标是:

1、减小代码的体积

2、提高代码运行的效率

(1)重用对象

特别是String对象的使用,出现字符串连接时应该使用StringBuilder/StringBuffer代替。由于Java虚拟机不仅要花时间生成对象,以后可能还需要花时间对这些对象进行垃圾回收和处理,因此,生成过多的对象将会给程序的性能带来很大的影响。

(2)及时关闭流

Java编程过程中,进行数据库连接、I/O流操作时务必小心,在使用完毕后,及时关闭以释放资源。因为对这些大对象的操作会造成系统大的开销,稍有不慎,将会导致严重的后果。

(3)循环内不要不断创建对象引用

例如:

for (int i = 1; i <= count; i++) { Object obj = new Object(); } (4)使用数据库连接池和线程池

这两个池都是用于重用对象的,前者可以避免频繁地打开和关闭连接,后者可以避免频繁地创建和销毁线程

(5)使用带缓冲的输入输出流进行IO操作

带缓冲的输入输出流,即BufferedReader、BufferedWriter、BufferedInputStream、BufferedOutputStream,这可以极大地提升IO效率

(6)String类尽量使用StringBuffer、StringBuilder

这个涉及到jvm的内存分配,举个例子

String str = “abc”; String strString = str + “123456789”; jvm会在堆内存中开辟3个空间,1为“abc”,2为“ccd”,3为“abcccd”,最终str2指向3,1和2因为没有被引用,会在GC回收机制内被回收,而GC的开销是相当大的,所以应尽量避免 那么使用StringBuffer是什么情况呢? StringBuffer str =“abc”; str.append(“ccd”) jvm只会在堆空间中开辟一个空间“abc”,执行append时只会在“abc”的空间上+“ccd” 因此避免了GC的回收,也避免了内存的浪费 同样是为了获取到“abcccd”,但第二种方式明显更有效率 那怎么判断是使用StringBuffer还是StringBuilder的呢? 如果有线程安全的考虑使用StringBuffer,无则使用StringBuilder,线程安全也是一个比较高的开销

本文标签: 代码方法java