Java性能调优

课程简介:

  • 本课程涉及JVM性能优化的各个方面
  • 重点阐述JVM相关知识、性能调优实践、相关工具的原理和使用
  • 理解通过Java程序设计提升软件性能

课程收益:

  • 了解JVM核心原理,充分利用现代硬件和操作系统,衡量Java性能
  • 帮助团队中各种角色的技术人员了解Java性能分析和调优方法
  • 编写并部署更高效率的Java应用程序

时间1~2天。

性能调优初步

  • 系统资源限制
  • CPU history
  • 硬件规格
  • Latency Table延时表
  • 延时时间
  • 磁盘规格
  • 调优分析层面
  • 优化方法
  • 性能视角
  • 吞吐量指标
  • 性能需求
  • 调优时机
  • “不要过早优化”?
  • 统计方法测量性能
  • 性能分析模式

基本工具一览

  • Linux工具
  • vmstat example
  • vmstat参数说明
  • iostat范例
  • iostat参数说明
  • netstat example
  • Linux Stack性能测试工具
  • JDK命令行工具
  • JDK GUI工具
  • OQL对象查询
  • JMeter

JVM 调优

  • 性能相关概览
  • 系统性能需求考虑
  • 应用系统需求
  • 重要性能相关数据(一)
  • 重要性能相关数据(二)
  • 虚拟机参数使用
  • 参数选项的作用
  • 启动过程
  • 内存监控
  • 类的数量
  • 堆直方图示例
  • 堆转储
  • 内存溢出错误
  • 监控内存情况
  • NMT example

垃圾收集

  • 主流垃圾收集器
  • 垃圾收集步骤
  • 垃圾收集分代
  • 垃圾收集设计
  • 垃圾收集图示(新生代)
  • 垃圾收集图示(老生代)
  • 选择垃圾收集算法
  • 调优原则
  • Stop the World
  • Safepoint安全点
  • 垃圾回收日志示例
  • CMS GC
  • G1 GC
  • 调优方法
  • 新生代优化
  • 永久代和元空间
  • GC log日志记录
  • GC jstat实例

类加载

  • 类加载过程(一)
  • 类加载过程(二)
  • 类载入速度
  • 类数据共享

JIT编译优化

  • 分层编译级别
  • 热点编译
  • 代码缓存
  • 代码编译
  • 打印编译过程
  • 内联优化
  • 线程监控
  • 磁盘IO
  • NIO and libs
  • 提升性能
  • 原生NIO缓存区
  • NIO Path文件系统
  • CPU记录和调度
  • 处理器利用率指标

应用服务器调优

  • 线程池
  • Executors工厂类
  • 线程池工作方式
  • 线程数设定
  • EE Concurrency
  • 数据库连接池
  • JDBC驱动
  • 数据库连接池
  • 配置数据库连接池
  • JPA performance
  • JPA缓存
  • 组件池
  • 减少内存占用
  • 对象池构造
  • 对象池表现
  • 线程局部变量
  • 引用类型
  • EJB对象池
  • EJB pools config
  • Web容器
  • 优化Web Container
  • 容器缓冲区
  • 监听器
  • servlet container config
  • 状态缓存池
  • 分布式缓存
  • 消息部分
  • JMS优化
  • Artemis log 文件
  • 消息集群高可用
  • 消息调优
  • Kafka优化
  • 容量估算
  • 负载均衡
  • 反向代理多个节点
  • mod_cluster
  • 日志记录和优化
  • 高效记录日志
  • 日志文件

Java应用系统调优

  • JMX获取性能数据
  • MBeanServer获取信息
  • JMX Architect
  • JMX example
  • trace埋点和监控
  • Wildfly metrics
  • Matrics example
  • 编写高效应用若干原则
  • 设计模式优化
  • 优化组件方法
  • 高效文本解析
  • 远程网络访问
  • 应用性能优化
  • 集群方案
  • 数据分区
  • 选用合适的并发方式
  • 线程同步
  • 集合优化
  • 代码异步化考虑
  • 高效使用集合
  • 并发控制方法
  • 并发包同步工具
  • 合理使用流Stream
  • RxJava使用
  • JavaEE 异步化
  • 编程目标优化(一)
  • 编程目标优化(二)

高级工具

  • JVMTI接口
  • 开发Agent
  • 范例
  • MethodTraceAgent.cpp
  • MethodTraceAgent.h
  • 编译运行
  • 运行
  • JFR和JMC
  • 使用JFR
  • JFR Events
  • 事件种类
  • JFR template模板
  • JMC GUI (一)
  • 应用程序部分(二)
  • 应用程序视图
  • JMC JVM部分
  • 内存视图
  • 线程视图
  • 触发器
  • JFR event事件概览
  • JitWatch
  • JitWatch Sample
  • Byteman
  • 范例
  • appmain.btm