代码优化的目标是: 1、减小代码的体积 2、提高代码运行的效率 (1)重用对象 特别是String对象的使用,出现字符串连接时应该使用StringBuilder/StringBuffer代替。由于Java虚拟机不仅要花时间生成对象,以后...
代码优化的目标是:
1、减小代码的体积
2、提高代码运行的效率
特别是String对象的使用,出现字符串连接时应该使用StringBuilder/StringBuffer代替。由于Java虚拟机不仅要花时间生成对象,以后可能还需要花时间对这些对象进行垃圾回收和处理,因此,生成过多的对象将会给程序的性能带来很大的影响。
Java编程过程中,进行数据库连接、I/O流操作时务必小心,在使用完毕后,及时关闭以释放资源。因为对这些大对象的操作会造成系统大的开销,稍有不慎,将会导致严重的后果。
例如:
for (int i = 1; i <= count; i++)
{
Object obj = new Object();
}
这两个池都是用于重用对象的,前者可以避免频繁地打开和关闭连接,后者可以避免频繁地创建和销毁线程
带缓冲的输入输出流,即BufferedReader、BufferedWriter、BufferedInputStream、BufferedOutputStream,这可以极大地提升IO效率
这个涉及到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,线程安全也是一个比较高的开销
本站主要用于日常笔记的记录和生活日志。本站不保证所有内容信息可靠!(大多数文章属于搬运!)如有版权问题,请联系我立即删除:“abcdsjx@126.com”。
QQ: 1164453243
邮箱: abcdsjx@126.com