基本原则:
1.字符串频繁操作时,多用StringBuffer而少用String
2.尽量使用本地资源,即反复使用的 变量要先保存成临时或局部变量,尤其是循环中使用的变量
3.String方法中的substring()和indexOf()都是本地方法,可以大量使用
4.如果函数返回了String类型,而且返回后的使用就是要加入到StringBuffer,此时可以直接传入StringBuffer
5.用两个一维数组代替二维数组
6.如果返回直接类型足够了,就没必要返回接口类型,如果返回HashMap就足够了,就没必要返回Map
7.如果一个方法不访问(不修改)成员变量,请用static方法
8.尽量不用getters和setter,如果你非要用,可加上final关键字,编译器会把它当做内联函数
9.不要在for循环第二个参数使用方法调用
10.不修改static变量,用static final来代替
11.foreach可以用来处理数组和arraylist,如果处理其他对象相当于Iterator
12.避免使用枚举,请使用常量代替
13.慎用浮点数float尤其是大量的数学运算
14.不使用的引用要手动置null,提高内存被回收的概率
15.慎用图片操作,使用后要释放资源
GC对象优化
1.循环优化
例如下面的代码会一直去执行alist,size()方法,带来性能损耗
List alist = uSvr.getUserinfoList();
for(int i=0;i<alist.size();i++){
}
修改为
for(int i=0 p=alist.size();i<p;i++){}
2.没有必要的时候,循环内不要创建对象
3.少用new创建对象
使用关键字new创建类的实例时,构造函数链中的所有构造函数都会被自动调用,但如果一个对象实现了Cloneable接口,我们就可以调用clone()方法
4.及时清除Session
通常情况下,服务器会自动释放没有活动的Session,但是在多用户并访时,系统内存要维护多个无效的Session,应该手动释放回收资源
//获取当前的session
HttpSession session = request.getSession();
if(null!=session){
session.invalidate();//使session失效
}
5.乘法和除法问题
利用位移来处理,性能会6被增加
优化方法调用代码
1.使用自身方法
2.使用虚拟优于接口
3.使用静态优于虚拟
4.尽可能避免使用内在的Get,Set方法
5.尽量避免使用InetAddress.getHostAddress()
6.尽量避免使用DatagramPacket.getSocketAddress()