java优化总结

(1)减少对象生命周期
对象生命周期=销毁时间-创建时间
实际上减少对象生命周期有2个途径:尽早地销毁对象和尽量晚地创建对象
大多数人都只注意尽早地销毁对象,但是却很少人注意尽量晚地创建对象。特别是耗费内存比较大的对象应该尽量晚地被创建。只有真正需要的时候才开始创建它.除了对象以外,比如连接数据库。只有所有准备就绪的时候,才再连接数据库,使用完成数据库连接就立刻关闭。最短时间使用连接,包括数据流也一样
(2)线程启动得越早越好
当准备线程的工作都已经好了以后,创建线程,就要马上启动线程,线程启动得越早越能提前获取数据
(3)用字符代替单字符串
StringBuilder str=new StringBuilder();
那么str.append("m")不如str.append('m')快
(4)StringBuilder可以连续增加
StringBuilder的append方法返回自身可以继续增加,无需重新获取StringBuilder对象
Java code
1
2
3
4
StringBuilder str= new  StringBuilder();
str.append( "abc" );
str.append( "ddd" );

可以写成
Java code
1
2
3
StringBuilder str= new  StringBuilder();
str.append( "abc" ).append( "ddd" );

(5)无顺序遍历数组
其实有的时候遍历数组无关顺序,只需要把数组对象都遍历一遍即可
通常写法是
Java code
1
2
3
4
5
6
int [] a= new  int [ 10000 ];
for ( int  i= 0 ,len=a.length;i<len;i++){
     int  b=a[i];
           //然后处理
}

其实我在无关顺序遍历数组的时候我这么写:
Java code
?
1
2
3
4
5
6
int [] a= new  int [ 10000 ];
for ( int  i=- 1 ,len=a.length;++i<len;){
     int  b=a[i];
            //然后处理
}
有的时候这么写
Java code
1
2
3
4
5
6
int [] a= new  int [ 10000 ];
for ( int  i=a.length;i> 0 ;){
     int  b=a[--i];
            //然后处理
}

充分利用++i或者--i.最后一个不用计算len,直接--i可以取值,比较的时候与常数0比较

(6)不要有多余的操作
Java code
1
2
3
4
String a=getA(),b=getB();
if (a!= null &&b!= null ){
}

最好为
Java code
1
2
3
4
5
6
7
String a=getA();
if (a!= null ){
      String b=getB(); //这样a为null,就不需要获取b了。
      if (b!= null ){
      }
}

还有像
Java code
1
2
3
4
if (getValue()!= 2 &&getValue()!= 0 ){
...
}

直接写为
Java code
1
2
3
4
5
int  value=getValue();
if (value!= 2 &&value!= 0 ){
...
}
要调用方法浪费性能,其次是访问对象属性,最快是局部变量,利用下标访问数组系统还要判断越界问题也浪费性能.
(7)还有一些数组复制用'system.arraycopy (),还有使用局部变量要比使用全局变量快。大家可以看不变性的String类源代码就知道了
(8)关于锁java有读写锁还有尝试获取锁的功能,可以参看ReadWriteLock类
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值