java 代码优化(一)

[b]1.循环优化[/b]
缺:
List alist=uSvr.getUserinfoList();

for(int i=0;i<alist.size();i++){

}

此种方式会一直去执行alist.size()方法,带来性能消耗,改为
for(int i=0 p=alist.size();i<p;i++){

}



[b]2.循环内不要创建对象[/b]
缺;
for(int i=1;i<=domainCount;i++){
.
AuditResult auditResult = new AuditResult();
..
}


这种做法会在内存中保存N份这个对象的引用//会浪费大量的内存空间,改为

AuditResult auditResult;
for(int i=1;i<=domainCount;i++){
.
auditResult=new AuditResult();
..
}



[b]3. 什么样的对象可以将其认定为不可视阶段呢?举个例子吧,在[/b]try{...}catch(Exception){...}代码中,如果在try的代码块中声明了一个obj,那么当整个 try{...}catch(Exception){...}代码段执行完毕以后这个obj实际上就已经属于不可视阶段了。

所以,应该采用如下方式
try{

Object obj=new Object();
}catch(Excepione e){
obj=null;
}



[b]4.少用new创建对象[/b]
用new关键词创建类的实例时,构造函数链中的所有构造函数都会被自动调用。但如果一个对象实现了Cloneable接口,我们可以调用它的clone()方法。clone()方法不会调用任何类构造函数。
缺:
在使用设计模式(Design Pattern)的场合,如果用Factory模式创建对象,则改用clone()方法创建新的对象实例非常简单。例如,下面是Factory模式的一个典型实现:
public static Credit getNewCredit() 
  {
return new Credit();

  }



改为
private static Credit BaseCredit = new Credit(); 
  public static Credit getNewCredit()  {
   return (Credit) BaseCredit.clone();
  }


[b]当new创建对象不可避免时,注意避免多次的使用new初始化一个对象。 尽量在使用时再创建该对象。 [/b]

NewObject object = new NewObject();
int value;
if(i>0 )
{
 value =object.getValue();
}


改为
int value;
if(i>0 )
{
 NewObject object = new NewObject();
 Value =object.getValue();
}


5.乘法和除法考虑

缺:

 for (val = 0; val < 100000; val +=5) { 
   alterX = val * 8;
   myResult = val * 2;
  }


改为:
for (val = 0; val < 100000; val += 5) { 
   alterX = val << 3;
   myResult = val << 1;
  }



[b]6.尽量多的使用stringbuffer[/b]


[b]7清除Session [/b]
  通常情况,当达到设定的超时时间时,同时有些Session没有了活动,服务器会释放这些没有活动的Session,.. 不过这种情况下,特别是多用户并访时,系统内存要维护多个的无效Session。
当用户退出时,应该手动释放,回收资源,实现如下:
HttpSession theSession = request.getSession();
// 获取当前Session
if(theSession != null){
 theSession.invalidate(); // 使该Session失效
}



NOTE:堆内存是在JVM启动的时候创建,堆内存分为新对象与老对象。对于新对象好像会分三个区域。当优先级最高的区域的堆栈满了以后JVM将会进行测试,测试内容是那些对象不可到达,不可到达的对象将会放入到老对象区域。同时JVM会将所有对象拷贝到另外两个区域中,然后经过一段时间依然没有引用的对象会进入老对象区域。对于老对象区域而言基本上就是等待被GC回收的对象了。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值