admin管理员组文章数量:1794759
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代码优化方法 内容由林淑君副主任自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.xiehuijuan.com/baike/1686845235a109477.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论