儘可能重用對象,不要循環建立對象,好比:for 循環字符串拼接(不在 for中使用+拼接,先new 一個StringBuilder再在 for 裏 append)java
容器類初始化的地時候指定長度正則表達式
List<String> collection = new ArrayLIst<String>(5); Map<String, String> map = new HashMap<String, String>(32);
ArrayList(底層數組)隨機遍歷快,LinkedList(底層雙向鏈表)添加刪除快數據庫
集合遍歷儘可能減小重複計算數組
使用 Entry 遍歷 Map緩存
大數組複製使用System.arraycopy安全
儘可能使用基本類型而不是包裝類型app
不要手動調用 System.gc()性能
及時消除過時對象的引用,防止內存泄漏學習
儘可能使用局部變量,減少變量的做用域優化
儘可能使用非同步的容器ArraryList vs. Vector
儘可能減少同步做用範圍, synchronized 方法 vs. 代碼塊
用ThreadLocal 緩存線程不安全的對象,SimpleDateFormat
儘可能使用延遲加載
儘可能減小使用反射,必須用加緩存
儘可能使用鏈接池、線程池、對象池、緩存
及時釋放資源, I/O 流、Socket、數據庫鏈接
慎用異常,不要用拋異常來表示正常的業務邏輯
String 操做盡可能少用正則表達式
日誌輸出注意使用不一樣的級別
日誌中參數拼接使用佔位符
log.info("orderId:" + orderId); 不推薦 log.info("orderId:{}", orderId); 推薦