1. 儘量指定類的final修飾符 帶有final修飾符的類是不可派生的。指定一個類為final,則該類所有方法都是final。Java編譯器會會找機會內聯所有否final方法,這樣能夠使性能平均提高50%. 2.儘量重用對象。 特別是String對象的使用中,出現字元串鏈接情況時應用StringB ...
1. 儘量指定類的final修飾符
帶有final修飾符的類是不可派生的。指定一個類為final,則該類所有方法都是final。Java編譯器會會找機會內聯所有否final方法,這樣能夠使性能平均提高50%.
2.儘量重用對象。
特別是String對象的使用中,出現字元串鏈接情況時應用StringBuffer代替。
3.儘量使用局部變數。
調用方法時傳遞的參數以及在調用中創建的臨時變數都保存在棧中,速度較快。其他變數買入靜態變數、實例變數等,都在堆中創建,速度較慢。另外,依賴於具體的編譯器/jvm,局部便利還可能得到進一步的優化。
4.不要重覆初始化變數。
5.在進行資料庫連接,I/O流操作是,記住務必在使用完後關閉連接,釋放資源。
因為這些大對象的操作會造成系統大的開銷。
6.在使用同步機制時,應儘量使用方法同步代替代碼塊同步。
7.慎用異常,
異常對性能不利。拋出異常首先要創建一個新的對象。Throwable介面的構造函數調用名為fillInStackTrace的本地方法,fillInStackTrace()方法檢查堆棧,手機調用跟蹤信息。只要有異常被拋出,VM就必須調用對堆棧,因為在處理過程中創建了一個新的對象。異常只能用於錯誤處理,不應該用來控製程序流程。
8.儘量不要在迴圈中使用try{}catch{}
可以在迴圈外部使用try,,catch包裹。
9.在StringBuffer時,應初始化StringBuffer的容量。這樣可以明顯提升性能。
10.當複製大齡數據時,使用System.arraycopy()
11.不用new關鍵詞創建類的實例。
用new關鍵字創建類 的實例時,構造函數鏈中的所有構造函數都會別自動調用。按如果一個對象實現了Cloneable介面,我們就可以用它的clone方法,clone方法不會調用任何類的構造函數。
12.在進行乘法和除法,使用位移操作符會大大提升性能。
13.儘量使用HashMap和ArrayList,除非必要,否則不推薦使用HashTable和Vetor,後者由於使用同步機制,進而導致了性能的開銷。
14.在遍歷Map時,儘量使用entry遍歷map,不要使用keyset()方式
15.儘量使用基本數據類型而不是包裝類型。
16.急事消除過期對象的引用,放置記憶體泄露。
17.儘量少使用反射,如果使用反射,第一次使用反射,然後加入緩存。
18.儘量使用連接池,線程池,對象池、緩存等。
19.使用日誌過程中參數拼接使用占位符
log.info("o:"+o)//不推薦
log.info("o:{}",o)//推薦
20.迴圈內不要不斷創建對象引用
21.不要對數組使用toString()方法
22.不要對超出範圍的基本數據類型做向下強制轉型
23.把一個基本數據類型轉微字元串,基本數據類型.toString()最快,valueOf次之,數據+""最慢
24.字元串變數和字元串常量equals的時候江字元串常量寫在前面
25.不喲啊江數組聲明微public static final
26.初始化集合,儘量制定大小
集合每次擴容的瑞安複雜度很有可能時O(n),所以儘量制定已知的集合大小,能減少集合的擴容次數
27.頻繁使用Collection.contains方法,使用Set代替
28.公有靜態變數應該通過類方位。
29.禁止使用構造方法BigDecimal(double),這樣會存在精度損失風險,應該使用BigDecimal.valueOf(double)
30.枚舉的屬性欄位必須時私有不可變