1.尽量指定类,方法的final修饰符。性能提高50%
2.尽量重用对象,特别是string对象出现时用stringbuffer代替
3.尽可能使用局部变量,调用方法传递的参数在在栈中创建速度快,静态变量,实例变量在堆中速度较慢
4.及时关闭流,特别数据库连接,io流操作
5.尽量减少对变量的重复计算,例如(for(int i=0;int len=list.size();i<len))
6.尽量采用懒加载策略,在需要的时候才创建,例如if(1=0){string str="aaa"}
7.慎用异常,跑出异常首先创建对象。
8.不要在循环中使用try catch 应该放在最外层。
9.古国估计到待添加的内容的长度,为底层以数组方式实现的集合,工具类指定初始长度。
例如:arryaList linkedList stringBuiler StringBuffer HashMap HashSet等等。例如200个对象设置成HashMap(128) 或者HashMap(256)都可以。
10.当复制大量数据时,使用System.arraycopy()命令。
11.乘法和处罚使用移位操作。例如a=a*8 可以改成 a=a<<3
12.循环内不要不断创建对象引用。
13.基于效率和类型检查的考虑,应该尽可能使用array 无法确定数组大小时使用arrayList
14.尽量使用HashMap,ArrayList,Stringbuilder 除非线程安全需要,否则不推荐使用Hashtable stringbufer 后三者有使用同步机制而导致性能开销。
15.不要将数组声明为public static final
16.尽量在合适的场景使用单例模式。控制资源的使用,通过线程同步来控制资源的并发访问,控制实例的产生以达到节约资源的目的,控制数据的共享,在不建立直接关联的条件下,让多个不相关的进程和线程之间实现通信。
17.尽量避免随意使用静态变量,静态变量声明周期和类相同,gc不会回收这个对象的堆内存。
18.及时清除不在需要的回话,一般为30分钟,当回话不在需要时,应及时调用httpserssion invalidate方法清除回话。
19.实现randomaccess接口的集合,例如arraylist应当使用for循环而不是foreach循环来遍历。
20.使用同步代码块代替同步方法,这点在多线程模块中的synchronized所方法块疑问中讲的很清楚,除非能确定一整个方法都需要进行同步的,否则尽量使用同步代码块,避免对那些不需要的进行同步的代码也进行了同步,影响了代码执行效率。
21,将常量声明static final并大写命名。
22.不要创建一些不使用的对象,不要导入一些不使用的类
23.程序运行过程中避免使用反射。反射是java提供给用户的一个很强大的功能,功能强大往往以为这效率不高,
24.使用数据库连接池和线程池
25.使用带缓冲的输入输出流进行io操作,带缓冲的输入输出流,即bufferreader bufferwriter bufferinputstram buffferdoutputstream 可以极大提高io效率,
26.顺序插入和随机访问比较多的场景使用arraylist,元素删除和中间插入比较多的场景使用linkedlist。这个理解arraylist和linedlist原理就知道了。
27.不要让public方法中有太多的形参。public方法是对外提供的方法,如果给这个方法太多的形参的话主要有俩点坏处:违反了面向对象的编程思想,java讲求一切都是对象,太多的形参和面向对象的编程思想并不契合,参数太多势必导致方法调用出错的概率增加。
28.字符串变量和字符串敞亮equals时候讲字符串常量写前面。例如if("123"equals(str))避免空指针。
29.请知道,在java中if i==1和if 1==i 是没有区别的,从阅读习惯讲,建议使用前者。
30.不要对数组使用tostring方法,打印出来是内存地址。
31.不要对超出范围的基本类型做向下强制转型。
32.把一个基本数据类型转为字符串,基本数据类型。tostring对快,string。valueof次之,+“”最慢。
33.使用最有效率的方式去遍历map,iterator方法。
34.对资源的close建议分开操作,例如改成try(xx.close),try(xx.close)这样可以避免资源泄露。
35.不用new关键词创建类的实例,例如private static object=new object;public static object getnewobj()(return (object)object.clone();),数组处理同样。
36.始终通过会话bean访问实体bean,直接访问实体bean不利于性能个,当客户端访问实体bean时,每一个get方法都是一个远程调用。
37.选择合适的引用机制,例如inclide指令,《%include和include动作《jsp:include
38.在jsp页面中关闭不用的回话,《%page session="false"%》
39.使用内存数据库保存回话对象中用户相关的数据。
40,不要在循环中条用synchronized同步方法。(循环中不要做复杂的操作)
41.使用条件操作符代替if else结构。例:return true?0:1;
42.不要总是使用取反操作符 !false改成true
43.二位数组比以为数组占用更多的内存空间,大概是10倍计算
44.避免枚举,浮点数的使用
转载请注明原文地址: https://ju.6miu.com/read-18421.html