欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

java优化,

来源: javaer 分享于  点击 10294 次 点评:135

java优化,


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.避免枚举,浮点数的使用




















相关文章

    暂无相关文章
相关栏目:

用户点评