目錄
作者序
編輯序
第一章 簡介
1.1 「慢」的原因
1.2 調整遊戲
1.3 系統限制與調整項目
1.4 調整策略
1.5 效能觀感
1.6 開始調整
1.7 量測對象
1.8 沒必要調整的,就別動手
1.9 檢查事項
第二章 效能分析工具
2.1 測量與計時
2.2 垃圾收集
2.3 Method Calls
2.4 物件生成分析
2.5 監視記憶體的整體用量
2.6 主從式通訊
2.7 檢查事項
第三章 JDK 本身的改良
3.1 垃圾收集
3.2 更換 JDK 的標準類別
3.3 更快的 VM
3.4 更好的最佳化編譯器
3.5 Sun 的編譯器和執行期的最佳化
3.6 編譯成原生機器碼
3.7 Native Method Call
3.8 未壓縮的 ZIP/JAR 檔
3.9 檢查事項
第四章 物件的生成
4.1 「物件生成」的統計數據
4.2 物件的重新利用
4.3 避免垃圾收集
4.4 初始化
4.5 初期與後期的初始化
4.6 檢查事項
第五章 字串
5.1 字串對效能的影響
5.2 字串的「編譯期定形」vs「執行期生成」
5.3 轉換成字串
5.4 「字串」和「字元陣列」的比較
5.5 字串的「比較」和「搜尋」
5.6 國際化字串的排序
5.7 檢查事項
第六章 異常、轉型 、變數
6.1 異常(Exceptions)
6.2 轉型(Cast)
6.3 變數
6.4 Method 的參數
6.5 檢查事項
第七章 流程控制
7.1 java.io.Reader 轉換器
7.2 用 exception 結束迴圈
7.3 switch
7.4 遞迴
7.5 遞迴與堆疊
7.6 檢查事項
第八章 I/O、日誌登載、操控台輸出
8.1 更換 System.out
8.2 日誌登載(Logging)
8.3 從「直接 I/O」到「加料 I/O」
8.4 序列化(Serialization)
8.5 物件集結和計算 I/O 作業的次數
8.6 壓縮
8.7 檢查事項
第九章 排序
9.1 避免不必要的排序負擔
9.2 一套高效率的排序程式架構
9.3 比 O(n logn) 更好的排序
9.4 檢查事項
第十章 多工緒
10.1 UI thread 和其它 thread
10.2 相競狀況
10.3 死結
10.4 同步化的額外負擔
10.5 多緒測試的時序測量
10.6 不可分的存取和設值動作
10.7 執行緒集區
10.8 負載均攤
10.9 分工解題的策略
10.10 檢查事項
第十一章 合適的資料結構與演算法
11.1 集合
11.2 Java 2 的集合1
11.3 Hashtable 和 HashMap
11.4 快取式存取
11.5 快取範例 I
11.6 快取範例 II
11.7 找出部份相符字串的位置
11.8 檢查事項
第十二章 分散式運算
12.1 工具
12.2 降低訊息量
12.3 通訊層的比較
12.4 快取
12.5 整批作業
12.6 劃分應用程式
12.7 分批作業
12.8 低階通訊的最佳化
12.9 分散式垃圾搜集
12.10 資料庫
12.11 檢查事項
第十三章 最佳化時機
13.1 何時不必最佳化
13.2 類別庫與 Bean 的調整
13.3 分析
13.4 設計與架構
13.5 佈署之後調整
13.6 其它影響效能的因素
13.7 檢查事項
第十四章 作業系統和網路本身的改良
14.1 硬碟
14.2 中央處理器(CPU)
14.3 記憶體(RAM)
14.4 網路的輸出與輸入
14.5 檢查事項
第十五章 參考資源
15.1 書籍
15.2 雜誌
15.3 URLs
15.4 效能評估工具
15.5 最佳化工具