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