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存放東西【個人看法】。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章