首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java 效能優化十一大實戰法則

     編輯:Java 相關知識

1. 迴圈優化

  • 提取不變量:for(int i=0, n=list.size(); i 避免重複呼叫 size()。
  • 循環不變式外提:double scale = scaleA * scaleB; 移出迴圈。

2. 字串處理

  • 杜絕 + 串接,長字串必用 StringBuffer/StringBuilder。
  • 預分配容量:new StringBuffer(5000) 減少擴容。

3. 基本型別優先

  • 熱點迴圈用 int 而非 long/double (通常更快)。
  • 包裝類僅用於需物件引用的 API 參數。
  • static final 修飾常量表達式,編譯器預計算。

4. 異常成本控制

  • 異常僅用於真正錯誤狀況,不可控制流程。
  • 建立異常物件需捕獲堆疊快照,開銷極大。
  • 合併 try-catch:多調用共用一個 try 區塊,而非每調用一個。

5. 基準測試

  • 技巧因平台/JVM 異,需實測 (如 Servlet 容器中 OutputStream vs PrintWriter 效能差異)。

6. Clone 替代 new (原型模式)

  • new 觸發完整建構鏈;Cloneable.clone() 跳過建構子。
  • 工廠模式中改用 clone():
    private static Credit base = new Credit();
    public static Credit getNew() { return (Credit) base.clone(); }
  • 陣列複製同理適用。

7. 非阻塞 I/O (NIO)

  • JDK 1.4+ java.nio 解決大量執行緒阻塞開銷,適用高併發伺服器。

8. 避免重複初始化

  • 預設值初始化 (null/0/false) 由 JVM 自動完成,new 時構造鏈每層皆執行,子類建構子勿重複賦值。

9. final 類別/方法內聯優化

  • final 類不可繼承,所有方法隱性 final,JIT 易內聯,平均提升 50% 效能 (視編譯器實現)。

10. 局部變數優先

  • 參數與局部變數存棧 (Stack),速度快;靜態/實例欄位存堆 (Heap),較慢。JIT 可能進一步優化局部變數 (寄存器分配)。

11. 位移替代乘除

  • val * 8 → val << 3,val * 2 → val << 1,val / 2 → val >> 1。
  • 位移極快,但降低可讀性,務必加註解。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved