Java代码优化方法

白色玫瑰 程序猿

时间: 2023-05-22 阅读: 1 字数:2332

{}
代码优化的目标是: 1、减小代码的体积 2、提高代码运行的效率 (1)重用对象 特别是String对象的使用,出现字符串连接时应该使用StringBuilder/StringBuffer代替。由于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,线程安全也是一个比较高的开销



原文地址:https://blog.csdn.net/weixin_40074861/article/details/121743285?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522168474933716800184119697%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=168474933716800184119697&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_ecpm_v1~rank_v31_ecpm-29-121743285-null-null.142^v87^control_2,239^v2^insert_chatgpt&utm_term=java%E4%BC%98%E5%8C%96

本文章网址:https://www.sjxi.cn/detil/9fb26954650a449e92d02770469138b4

最新评论

当前未登陆哦
登陆后才可评论哦

湘ICP备2021009447号

×

(穷逼博主)在线接单

QQ: 1164453243

邮箱: abcdsjx@126.com

前端项目代做
前后端分离
Python 爬虫脚本
Java 后台开发
各种脚本编写
服务器搭建
个人博客搭建
Web 应用开发
Chrome 插件编写
Bug 修复