作者:小奇Java 面试
标签:JVM调优 / 面试故事 / Java工具链 / 技术趣闻
这次是“曜能科技”的面试室,装修风格是科技蓝加亚克力玻璃,桌子上还有一本《高性能 Java》第三版。
我穿着一件略显皱的米白色T恤,脚踩帆布鞋,背着“Java is everywhere”的帆布包,看上去像是刚从实验室跑出来的实习生。
对面坐着的面试官,穿着笔挺西装,皮鞋锃亮,Apple Watch 闪着光。他翘着二郎腿,笑着问我:
“小兄弟,做 JVM 性能调优么?都用什么工具?”
我故作局促地挠头:“呃……是用 jps 打开方式不对么?”
他刚想反问,我话锋一转:
“不过如果您非要我一个个讲……我就只能从武林秘籍讲起了。”
jps -l
显示所有运行中的 Java 进程。
jstat -gc <pid> 1000
jmap -heap <pid>
jmap -histo <pid>
jmap -dump:format=b,file=heapdump.hprof <pid>
可查看对象数量、类型、内存分布。
jhat heapdump.hprof
Web 界面方式分析 dump 文件。
jstack <pid>
查死锁、查看线程状态、分析阻塞。
启动 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 调优,记得:
jstat
jmap
+ jstack
关注「小奇 Java 面试」,JVM 就像你家后院,没你想的那么难打理!
可以搜索【小奇JAVA面试】第一时间阅读,回复【资料】获取福利,回复【项目】获取项目源码,回复【简历模板】获取简历模板,回复【学习路线图】获取学习路线图。