Java性能优化权威指南

第一章 方法论

性能分析策略

  • 自顶向下
  • 自底向上

第二章 操作系统性能监控

三部曲

  • 性能监控:收集或查看应用运行性能数据
  • 性能分析:对性能监控所产生的问题进行回应
  • 性能调优:改善系统应用响应性或吞吐量等活动

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的频率和时间

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容