面试官问我“JVM 调优工具有哪些怎么用”,我一开口他就知道是老江湖

作者:小奇Java 面试
标签:JVM调优 / 面试故事 / Java工具链 / 技术趣闻


面试场景:一个调优老兵的对话局

这次是“曜能科技”的面试室,装修风格是科技蓝加亚克力玻璃,桌子上还有一本《高性能 Java》第三版。

我穿着一件略显皱的米白色T恤,脚踩帆布鞋,背着“Java is everywhere”的帆布包,看上去像是刚从实验室跑出来的实习生。

对面坐着的面试官,穿着笔挺西装,皮鞋锃亮,Apple Watch 闪着光。他翘着二郎腿,笑着问我:

“小兄弟,做 JVM 性能调优么?都用什么工具?”

我故作局促地挠头:“呃……是用 jps 打开方式不对么?”

他刚想反问,我话锋一转:

“不过如果您非要我一个个讲……我就只能从武林秘籍讲起了。”


JVM 调优工具图鉴:江湖十八门派

‍♂️ jps:江湖探子,定位进程专用

jps -l

显示所有运行中的 Java 进程。


‍♀️ jstat:气血监测大师

jstat -gc <pid> 1000
  • 监控 GC 次数
  • 各代内存使用情况
  • 实时刷新,适合观察 GC 频率

jmap:内存镜像大师

jmap -heap <pid>
jmap -histo <pid>
jmap -dump:format=b,file=heapdump.hprof <pid>

可查看对象数量、类型、内存分布。


jhat:堆分析术士(已退役)

jhat heapdump.hprof

Web 界面方式分析 dump 文件。


jstack:线程挂图大师

jstack <pid>

查死锁、查看线程状态、分析阻塞。


VisualVM:图形门派掌门人

  • 内存、CPU、线程实时图表
  • 支持远程连接
  • 支持插件扩展(例如 Visual GC)

‍♂️ Java Mission Control(JMC)+ JFR

  • 深度诊断工具
  • 查看线程、内存分布、锁竞争、GC 行为

‍ GC 日志:战地现场报告

启动 JVM 加参数:

-Xlog:gc*:file=gc.log

结合工具 GCEasy、GCViewer 分析。


工具总结表格

工具名 用途 特点说明
jps 查看 JVM 进程 快速定位目标
jstat 监控 GC 状态 实时监控堆区
jmap 导出堆快照/内存直方图 分析对象分布
jstack 查看线程栈信息 死锁分析、阻塞排查
jhat 堆分析工具(过时) 配合 hprof 文件查看
VisualVM 图形化调优工具 支持插件、实时性能监控
JMC + JFR 深度性能分析 可视化分析 JFR 日志
GC 日志 GC 调优关键 配合 GC Viewer 工具效果更佳

面试官开始记笔记了

我边讲边写,一不小心就在白板上画出 JVM 堆的结构,还顺手写了几条 GC 参数。

面试官眼神一变:“你确定你是刚毕业的?”

我苦笑:“我是奇哥,偶尔来地球实习一阵子。”


彩蛋推荐

想学 JVM 调优,记得:

  1. 开启 GC 日志
  2. 看实时内存:jstat
  3. 分析堆与线程:jmap + jstack
  4. GUI 工具加持:VisualVM / JMC

关注「小奇 Java 面试」,JVM 就像你家后院,没你想的那么难打理!

可以搜索【小奇JAVA面试】第一时间阅读,回复【资料】获取福利,回复【项目】获取项目源码,回复【简历模板】获取简历模板,回复【学习路线图】获取学习路线图。

在这里插入图片描述

你可能感兴趣的:(吊打面试官,jvm)