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,线程安全也是一个比较高的开销


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部