课程培训
JVM 实战培训课程规划(金融行业场景)

JVM 实战培训课程规划(金融行业场景)

一、培训目标与定位

• 培训目标

○ 建立完整 JVM 知识体系:从原理到实现,聚焦 HotSpot,打通“JVM 结构 → 内存模型 → 类加载 → 执行引擎 → GC → 调优”全链路。

○ 构建可实操的排查与调优体系:围绕金融系统高频问题(OOM、内存泄漏、GC 卡顿、线程异常等),形成标准化排查手册与调优步骤。

○ 提升生产问题处置能力:熟练使用 jps/jstat/jmap/jstack、GC 日志、MAT 等生产工具,能够独立完成一次从“报警 → 定位 → 验证 → 优化 → 回归”的闭环。

○ 支撑 JVM 自主人才梯队建设:沉淀内部可复用的教材、案例、演练任务与规范,为后续内训打基础。

• 适合人群

○ 核心业务系统与中台系统的 Java 开发

○ 应用架构师 / 技术负责人

○ 运维 / SRE / 性能测试工程师(参与 GC 调优与问题排查)

• 基础要求

○ 熟悉 Java 基础语法与集合、多线程基础

○ 有 1 年以上生产项目经验,最好接触过一次以上生产性能/内存问题

 

二、整体安排概览

• 形式安排

○ 时间:3 天,每天 6 小时左右(建议 9:30–12:00、13:30–17:00)

○ 节奏:上午偏理论体系 + 案例分析,下午偏工具实战 + 上机演练

○ 产出:课程 PPT、讲义 PDF、实验手册、标准排查流程图、典型问题案例库

• 三天主题概览

○ Day 1:JVM 总览与内存模型 / 类加载体系

○ Day 2:GC 算法与 HotSpot 垃圾收集器体系(偏理论 + 案例)

○ Day 3:GC / 内存 / 线程问题排查与性能调优实战(偏实战 + 流程)

 

Day 1:JVM 总览、运行时内存模型与类加载机制(HotSpot 视角)

上午:JVM 体系与运行时内存模型

1. 金融系统视角下的 JVM 能力边界

○ 金融级系统的特点:强一致性、高可用、低延迟、可审计、可回溯

○ JVM 在金融系统中的角色:在线交易、批量任务、风控引擎、清结算等

○ JVM 相关非功能需求:SLA、响应时间、吞吐量、稳定性与观测性

2. HotSpot JVM 整体架构

○ JVM 规范 vs HotSpot 实现

○ 执行路径:Java 源码 → 字节码 → 即时编译 → 机器码

○ 关键模块:类加载子系统、运行时数据区、执行引擎、GC 子系统

3. 运行时内存模型(HotSpot 重点)

○ 运行时内存划分

▪ 线程私有:程序计数器、虚拟机栈、本地方法栈

▪ 线程共享:堆、方法区(元空间)、运行时常量池

○ 堆结构与分代模型

▪ 新生代(Eden + Survivor)与老年代、Metaspace 基本概念

▪ Generational Hypothesis(代际假说)与对象生命周期

○ 内存溢出场景梳理

▪ 堆内存 OOM、Metaspace OOM、栈溢出 StackOverflowError

▪ 典型业务误用导致的 OOM(大集合缓存、ThreadLocal 泄漏、无界队列等)

4. Java 内存模型(JMM)与并发可见性基础(为 Day3 线程问题埋伏笔)

○ 主内存与工作内存、happens-before、可见性、有序性

○ volatile、synchronized、锁升级对性能与可见性的影响(点到为止)

• 上午小练习 / 讨论

○ 通过简单 Demo 触发:堆 OOM、栈 OOM、Metaspace OOM,对应解读错误信息

○ 结合公司生产事故回顾 1–2 个内存相关事件(由贵司提前提供/匿名化)

 

下午:类加载机制、类卸载与 Metaspace 问题

5. 类加载机制体系

○ 双亲委派模型原理与金融系统中的典型扩展场景

▪ 自研插件化框架、规则引擎、脚本引擎、SPI、Agent 等

○ ClassLoader 分类与主要实现(Bootstrap、Ext、App、自定义)

○ 类的生命周期:加载 → 链接(验证、准备、解析)→ 初始化 → 使用 → 卸载

6. Metaspace / 常量池问题与排查

○ JDK8+ Metaspace 内存布局与参数配置(MaxMetaspaceSize 等)

○ 典型问题:

▪ 动态代理频繁生成类导致 Metaspace OOM

▪ 频繁热部署 / ClassLoader 泄漏

▪ 大量字符串常量导致内存浪费

○ 案例:某支付渠道系统 Metaspace OOM 事故拆解

▪ 现象:进程多次重启、GC 日志中频繁 Full GC

▪ 工具:jmap、GC 日志、MAT 分析 class 直方图

▪ 根因:自定义 ClassLoader 未被卸载、第三方库使用不当

7. 工具初识:jps / jstat / jmap / jstack 基础用法

○ jps:列出 JVM 进程 ID,结合 -l、-v 查看启动参数

○ jstat:常用场景

▪ jstat -gc/-gcutil 观察堆使用趋势

▪ 新生代 / 老年代占用情况快速判断是否有 GC 风险

○ jmap

▪ -heap 查看堆配置与使用摘要

▪ -histo 快速查看对象分布(Top N 类型)

▪ -dump:live,format=b,file=xxx 生成堆 dump 供 MAT 分析

○ jstack

▪ 线程 Dump 采集与基础解读(死锁、阻塞、频繁切换)

8. 上机实战环节(建议 2~3 个任务)

○ 任务示例:

▪ 编写简单 Demo 动态生成大量类,观察 Metaspace 增长与 OOM

▪ 使用 jps/jstat/jmap 观测一个压测中的 JVM 进程堆使用变化

▪ 使用 jstack 捕获线程快照,识别一个简单的死锁示例

• Day 1 关键收获

○ 能说清楚:HotSpot 运行时内存结构与各区域职责

○ 能用基础工具:jps/jstat/jmap/jstack 完成一次基础的堆 / 线程问题初步定位

○ 对 Metaspace / 类加载相关问题有初步风险意识

 

Day 2:GC 原理与 HotSpot 垃圾收集器体系(含 GC 日志分析)

上午:GC 算法与收集器体系(理论 + 案例)

9. GC 基本算法与实现策略

○ 标记-清除、标记-整理、复制算法对比

○ 可达性分析(GC Roots)、引用类型(强 / 软 / 弱 / 虚)

○ Stop-The-World(STW)机制与对交易延迟的影响

10. HotSpot 垃圾收集器族谱(以金融系统主流版本为主)

○ 串行 / 并行收集器:Serial、Parallel Scavenge、Parallel Old

○ CMS(若仍有遗留系统)

▪ CMS 运行阶段、并发标记、重标记

▪ CMS 的失败场景:浮动垃圾、内存碎片、promotion failed

○ G1 GC(重点)

▪ Region 概念、年轻代 / 老年代不再物理分区

▪ Mixed GC、Remembered Set、Pause Time 目标

▪ 适用于金融系统的场景与配置思路

○ ZGC / Shenandoah(点到为止,看公司 JDK 版本情况)

11. 金融业务场景下的 GC 策略思考

○ 在线交易 vs 批处理作业 vs 清算对 GC 的不同要求

○ 延迟敏感业务对 STW 的容忍度与峰值 TPS 的关系

○ 常见错误认知:一味追求“无 FullGC” vs 实际业务 SLA

12. 案例讲解:典型 GC 故障

○ 场景 1:交易高峰期频繁 FullGC 导致响应超时

○ 场景 2:CMS promotion failed 触发 Serial Old,响应雪崩

○ 场景 3:G1 配置不当引发频繁 Mixed GC 与长时间 Remark

 

下午:GC 日志分析 + jstat 结合实战

13. GC 日志参数与输出格式

○ JDK8 / JDK11+ 不同 GC 日志配置方式(-Xloggc / -Xlog:gc*)

○ 关键指标解析:

▪ Young GC / Mixed GC / Full GC 频率与耗时

▪ 各内存区域使用变化、晋升速率、GC Cause

▪ User / Sys / Real 时间及 STW 时长

○ 配合 jstat 长期观察与短期问题定位

14. GC 日志实战分析(以真实或仿真日志为例)

○ 案例 1:Young GC 频繁但停顿较短,吞吐不达标

○ 案例 2:老年代持续增长,偶发超长 FullGC 卡顿

○ 案例 3:Mixed GC 调优前后对比(G1)

15. 工具实践:GC 日志可视化与分析工具

○ 基础命令行分析(grep、自写脚本)

○ 简单介绍一两款 GC 日志可视化工具(如 GCViewer 等)思路(可选)

16. 上机实战环节(建议 2~3 个任务)

○ 任务示例:

▪ 给出一段 GC 日志(CMS / G1),要求参与者:

• 标出 Young / Mixed / FullGC 的发生点与原因

• 估算业务高峰期是否能满足 SLA

▪ 修改 JVM 参数(如 -Xms/-Xmx、G1 相关参数),对比 GC 日志变化

▪ 使用 jstat 持续采样,结合 GC 日志分析一次“堆慢性上涨”的原因

• Day 2 关键收获

○ 能从 GC 日志中读懂:GC 类型、次数、耗时、堆趋势

○ 能根据日志初步判断:是参数问题、对象生命周期问题还是流量/架构问题

○ 对公司主流 GC 策略(如 G1)形成清晰的理解与基本调优原则

 

Day 3:性能与内存问题排查实战(OOM / 泄漏 / 卡顿 / 线程)

上午:常见生产问题类型与标准排查流程

17. 内存相关问题分类与套路

○ OOM 类型与根因梳理

▪ java.lang.OutOfMemoryError: Java heap space

▪ ...: Metaspace

▪ ...: unable to create new native thread

▪ GC overhead limit exceeded

○ 内存泄漏 vs 内存占用大

▪ 真正的泄漏:对象本不应存活却被错误引用

▪ 正常大对象:确实需要大量内存(大报表、批处理)

18. 内存 / GC 问题排查标准流程(重点输出可复用流程图)

○ 入口:报警来源(APM 指标、JVM 指标、日志告警)

○ 步骤:

i. 通过监控确认问题现象与范围(响应时间、GC 次数、堆使用曲线)

ii. 使用 jps/jstat 快速确认堆/GC 当前状态

iii. 决策是否 dump 堆(jmap,或使用服务框架内置运维命令)

iv. 使用 MAT / GC 日志 交叉验证:

• Who is holding memory?

• 哪些类 / 哪些 Map / 哪些缓存?

v. 结合业务代码与调用链确定根因

vi. 调整方案设计与验证(参数优化 / 代码修复 / 架构改造)

○ 特别强调:生产环境 dump 策略与安全合规要求(脱敏、访问控制、线下分析流程)

19. 线程 / 死锁 / 业务卡顿问题排查流程

○ 线程池使用常见问题:不当核心线程数、无界队列引发 OOM

○ 死锁、活锁、频繁上下文切换

○ 使用 jstack 分析:

▪ 线程状态(RUNNABLE / BLOCKED / WAITING / TIMED_WAITING)

▪ 死锁检测信息、热点线程栈(CPU 飙高场景)

20. 金融系统典型场景拆解(讲师准备 2–3 个真实 / 仿真案例)

○ 案例:核心交易系统在余额批量调整时出现 OOM

○ 案例:风控服务在某规则切换后频繁 FullGC

○ 案例:定时任务线程池配置不当导致 unable to create new native thread

 

下午:MAT + 工具实战演练 & 体系化总结

21. MAT 堆分析实战

○ MAT 基础视图与概念:

▪ Histogram / Dominator Tree / Top Consumers

▪ Retained Size vs Shallow Size

○ 典型分析路径:

▪ 找 Top N 大对象 → 查看引用链 → 找到责任代码

▪ 找到可疑 ClassLoader / 线程 / 缓存对象

○ 案例引导:

▪ Map 缓存忘记过期策略

▪ ThreadLocal 未手动清理

▪ 监听器 / 回调未注销导致的泄漏

22. 综合演练:从报警到定位到优化(完整闭环)

○ 设计一个接近真实生产的综合实验:

▪ 提供一套压测脚本(或固定请求流量)

▪ 应用在特定场景下出现:

• heap 使用持续上涨 + OOM

• 或 GC 频繁 + 延迟毛刺

▪ 要求学员按流程:

1. 观察监控(提供曲线截图或实时面板)

2. 使用 jps/jstat 定位问题大致方向

3. 使用 jmap 采集 dump

4. 使用 MAT 分析根因

5. 调整代码 / 参数(给出建议或修改 Demo)

6. 再次压测验证效果

○ 小组协作:每组输出一版“排查与调优报告”

23. 构建公司内部 JVM 知识与实战体系(方法论输出)

○ 建议的内部知识库结构:

▪ JVM 基础与运行机制

▪ GC 策略与参数模板(按业务类型)

▪ 典型问题案例库(OOM / 泄漏 / 卡顿 / 线程)

▪ 标准排查流程与工具使用手册

○ 建议的规范 / 模板输出:

▪ JVM 启动参数基线模板(按服务类型划分)

▪ 性能压测报告模板

▪ 生产问题分析报告模板

○ 后续人才梯队建设建议:

▪ 设立 JVM 方向技术负责人 / Champion

▪ 定期组织 GC / 性能复盘分享会

▪ 结合公司实际问题持续更新案例库

24. 培训总结与答疑

○ 回顾三天核心知识点与工具链

○ 针对公司现有系统问题与项目做定向 Q&A

○ 收集参训人员问题,形成 FAQ 文档(后续沉淀)

• Day 3 关键收获

○ 掌握可落地的标准化排查与调优流程

○ 能够针对真实问题完成一轮完整的定位 → 优化 → 验证闭环

○ 明确公司内部 JVM 知识体系与人才梯队建设的路径

 

三、培训交付物

• 培训交付物

○ 体系化 PPT / 讲义:涵盖三天所有知识点与流程图

○ 实验指南与参考答案:各实战任务的操作步骤与思路

○ 问题排查流程图:

▪ 内存 / GC 问题排查流程

▪ 线程 / 死锁 / 卡顿问题排查流程

○ 典型案例文档:至少 5–8 个典型金融场景案例拆解

○ JVM 参数推荐模板:按应用类型(在线交易、风控、清算、批处理等)





如果您想学习本课程,请预约报名
如果没找到合适的课程或有特殊培训需求,请订制培训
除培训外,同时提供相关技术咨询与技术支持服务,有需求请发需求表到邮箱soft@info-soft.cn,或致电4007991916
技术服务需求表点击在线申请

服务特点:
海量专家资源,精准匹配相关行业,相关项目专家,针对实际需求,顾问式咨询,互动式授课,案例教学,小班授课,实际项目演示,快捷高效,省时省力省钱。

专家力量:
中国科学院软件研究所,计算研究所高级研究人员
oracle,微软,vmware,MSC,Ansys,candence,Altium,达索等大型公司高级工程师,项目经理,技术支持专家
中科信软培训中心,资深专家或讲师
大多名牌大学,硕士以上学历,相关技术专业,理论素养丰富
多年实际项目经历,大型项目实战案例,热情,乐于技术分享
针对客户实际需求,案例教学,互动式沟通,学有所获
报名表下载
联系我们 更多>>

咨询电话:010-62883247

                4007991916

咨询邮箱:soft@info-soft.cn  

 

  微信咨询

随时听讲课

聚焦技术实践

订制培训 更多>>