第一章 方法论
性能分析策略
- 自顶向下
- 自底向上
第二章 操作系统性能监控
三部曲
- 性能监控:收集或查看应用运行性能数据
- 性能分析:对性能监控所产生的问题进行回应
- 性能调优:改善系统应用响应性或吞吐量等活动
CPU使用率
vmstat命令
- us:用户态CPU使用率
- sy:内核态CPU使用率
- id:CPU空闲率
top命令
CPU调度程序运行队列
运行队列是那些已准备好运行,正等待可用CPU的轻量级进程,用于分辨系统是否满负荷,队列越长,表示系统已饱和。
vmstat命令
- r:运行队列长度
内存使用率
监控内存相关属性,页调度、页交换、加锁、线程上下文切换等。
vmstat命令
- free:空闲内存
- si:内存页换入数量
- so:内存页换出数量
网络I/O使用率
nicstat包
磁盘I/O使用率
iostat -xm
第三章 JVM预览
HotSpot VM三组件
- VM运行时(Runtimec)
- JIT编译器(JIT Compiler)
- 内存管理器(Memory Manager)
Runtimec
命令行选项
- 标准选项
- 非标准选项(-X)
- 为稳定选项(-XX)
第四章 JVM性能监控
垃圾回收
- GC日志分析
- GCHisto离线分析工具
- JConsole
- VisualGC
- VisualVM
第五章 Java应用性能分析
- Performance Analyzer
- NetBeans Profiler
术语
- 性能分析器(Profiler)
- 性能文件(Profile)
- 开销(Overhead)
- 调用树(Call Tree)
- 过滤器(Filter)
第六章 Java应用性能分析技巧
分类
- 使用更高效的算法
- 减少锁竞争
- 为算法生成更有效率的代码
技巧
- volatile使用
- 调整数据结构大小
- 增加并行性
第七章 JVM性能调优入门
调优流程
垃圾收集调优基础
性能指标
- 吞吐量
- 延迟
- 内存使用
命令选项
- -XX:+PrintGCTimeStamps:JVM启动到垃圾回收开始的时间
- -XX:PrintGCDetails:提供垃圾收集器相关的统计数据
- -Xloggc:<filename>:指定GC日志文件
内存使用
堆空间
- -Xmx:最大值
- -Xms:最小值
新生代
- -XX:NewSize:新生代最小值
- -XX:MaxNewSize:新生代最大值
- -Xmn:新生代大小
永久代
- -XX:PermSize:永久代最小值
- -XX:MaxPermSize:永久代最大值
调优延迟/响应性
优化新生代大小
Minor GC的频率和时间
优化老年代大小
Full GC的频率和时间
网友评论