第一章 方法論
性能分析策略
- 自頂向下
- 自底向上
第二章 操作系統(tǒng)性能監(jiān)控
三部曲
- 性能監(jiān)控:收集或查看應用運行性能數(shù)據
- 性能分析:對性能監(jiān)控所產生的問題進行回應
- 性能調優(yōu):改善系統(tǒng)應用響應性或吞吐量等活動
CPU使用率
vmstat命令
- us:用戶態(tài)CPU使用率
- sy:內核態(tài)CPU使用率
- id:CPU空閑率

top命令
CPU調度程序運行隊列
運行隊列是那些已準備好運行,正等待可用CPU的輕量級進程,用于分辨系統(tǒng)是否滿負荷,隊列越長,表示系統(tǒng)已飽和。
vmstat命令
- r:運行隊列長度

內存使用率
監(jiān)控內存相關屬性,頁調度、頁交換、加鎖、線程上下文切換等。
vmstat命令
- free:空閑內存
- si:內存頁換入數(shù)量
- so:內存頁換出數(shù)量

網絡I/O使用率
nicstat包

磁盤I/O使用率
iostat -xm

第三章 JVM預覽
HotSpot VM三組件
- VM運行時(Runtimec)
- JIT編譯器(JIT Compiler)
- 內存管理器(Memory Manager)

Runtimec
命令行選項
- 標準選項
- 非標準選項(-X)
- 為穩(wěn)定選項(-XX)
第四章 JVM性能監(jiān)控
垃圾回收
- GC日志分析
- GCHisto離線分析工具
- JConsole
- VisualGC
- VisualVM
第五章 Java應用性能分析
- Performance Analyzer
- NetBeans Profiler
術語
- 性能分析器(Profiler)
- 性能文件(Profile)
- 開銷(Overhead)
- 調用樹(Call Tree)
- 過濾器(Filter)
第六章 Java應用性能分析技巧
分類
- 使用更高效的算法
- 減少鎖競爭
- 為算法生成更有效率的代碼
技巧
- volatile使用
- 調整數(shù)據結構大小
- 增加并行性
第七章 JVM性能調優(yōu)入門
調優(yōu)流程

垃圾收集調優(yōu)基礎
性能指標
- 吞吐量
- 延遲
- 內存使用
命令選項
- -XX:+PrintGCTimeStamps:JVM啟動到垃圾回收開始的時間
- -XX:PrintGCDetails:提供垃圾收集器相關的統(tǒng)計數(shù)據
- -Xloggc:<filename>:指定GC日志文件
內存使用
堆空間
- -Xmx:最大值
- -Xms:最小值
新生代
- -XX:NewSize:新生代最小值
- -XX:MaxNewSize:新生代最大值
- -Xmn:新生代大小
永久代
- -XX:PermSize:永久代最小值
- -XX:MaxPermSize:永久代最大值
調優(yōu)延遲/響應性
優(yōu)化新生代大小
Minor GC的頻率和時間
優(yōu)化老年代大小
Full GC的頻率和時間