java基本调优

一、基本代码的调优。

老生常谈,没什么可说的,减少没必要的的代码,注重注释,命名规范等。

二、减小没有必要的操作

 对像的创建是一个很消耗内存的,所以我们应该尽量减少对象的创建,在需要的时候才创建,做到一次初始化到处使用的原则,在用完后置null有利于垃圾收集。让类实现Cloneable接口,同时采用工厂模式【如果不了解的可以看看java的设计模式,貌似有26种】,将减少类的创建,每次都是通过clone()方法来获得对象。另外使用接口也能减少类的创建。对于成员变量的初始化也应尽量避免, 特别是在一个类派生另一个类时。

  异常抛出对性能不利。抛出异常首先要创建一个新的对象。Throwable接口的构造函数调用名为, fillInStackTrace()的本地(Native)方法,fillInStackTrace()方法检查堆栈,收集调用跟踪信息。只要有异常被抛出,VM就必须调整调用堆栈,因为在处理过程中创建了一个新的对象。 异常只能用于错误处理,不应该用来控制程序流程。
  此外, 建议关闭Debug输出,尽量少用串行化、同步操作和耗时昂贵的服务(如Date())。

三、 使用合适的类型

  当原始类型不能满足我们要求时,使用复杂类型。String和StringBuffer的区别自不必说了,是我们使用最多的类型,在涉及到字符运算时,强烈建议使用StringBuffer。在做String匹配时使用intern()代替equal()。
  带有final修饰符的类是不可派生的, 如果指定一个类为final,则该类所有的方法都是final。
  Java编译器会寻找机会内联所有的final方法,这将能够使性能平均提高50%。类的属性和方式使用final或者static修饰符也是有好处的。
  调用方法时传递的参数以及在调用中创建的临时变量都保存在栈(Stack)中,速度较快。所以尽量使用局部变量。
  ArrayList和Vector,HashMap和Hashtable是我们经常用到的类,前者不支持同步,后者支持同步,前者性能更好,大多数情况下选择前者。
四、 尽量使用pool,buffer和cache【在hibernate中建议使用默认的ehcache缓存】
  使用pool、buffer和cache能大大提高系统的性能,这在J2EE的大部分技术中都是适用的。
  在WebLogic中就大量使用了池:JDBC Connection Pool、Socket Pool、Object Pool和Thread Pool。I/O操作中,buffer是必须的,特别是对大文件的操作,不然容易造成内存溢出。字节操作最快,所以尽可能采用write(byte []),Buffered FileOutputStream比Buffered FileWriter要快,因为FileWriter需要Unicode到Byte的转换。
  而后面讲到的JDBC、JSP我们都非常建议使用buffer和cache。为HttpServletResponse设置buffersize,使用wl-cache,缓存在JNDI树上获取的对象等等。
  此外,使用JDK 1.4的非阻塞I/O对性能也有很大提高。

四、JDBC的优化

 这个很重要,在使用连接的时候必须关闭,同时必须采用prepareStatement,在使用完数据库资源后依次关闭ResultSet,Statement和Connection,而在一个数据库连接多次进行数据库操作时要特别注意ResultSet和Statement依次关闭。【这是JDBC的基本操作】。下面介绍一下weblogic单独的数据库优化技术,weblogic之所以很强大,一个很大的因素就是提供多个缓存以及pool技术,当然对JDBC也有相应的连接池。而我们要做的就是直接在调用数据库管理器就可以了 ,既方便又高效,对高并发,大数据或者频繁操作数据库起到很好的缓冲作用。

五、httpsession的管理

  大家都知道session会占用服务器资源的 ,很多人对何时创建session可能不是很熟悉,在此本人作为菜鸟,给大家分享下自己是什么事情创建seesion的。如果有不同的想法可以多多交流,应用服务器保存很多会话时,容易造成内存不足,所以尽量减少session的使用,放置session里的对象不应该是大的对象,最好是小的对象,并且要实现串行化接口,当seession不需要的时候我们必须及时调用invalidate()及时的清楚了,在某个变量不需要的时候及时调用removeAttribute()方法。还有特别一点,虽然现在很少人使用了ejb了,但是我还是提一下,千万别把ejb这种大对象放在session里面。本人在做项目的时候seesion一般都是登录的时候才使用。其他基本上不使用什么seesion存放东西【个人看法】。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章