请列举并说明你使用过的 JDK 自带命令行工具,并简述各自的用途。
考察说明
考察候选人对 JDK 工具链的熟悉程度以及实际项目中的应用经验。
回答思路
- 【回答框架 1】JDK 工具分为基础工具和诊断工具。基础工具如 javac 用于编译,java 用于启动应用,jar 用于打包,javadoc 用于生成文档,这些是日常开发必备。
- 【回答框架 2】诊断工具常用于性能调优和问题排查。jps 列出 Java 进程,jstat 查看 JVM 统计信息,jinfo 查看和调整运行时参数,jmap 生成堆转储或查看堆详情,jstack 打印线程快照。
- 【回答框架 3】JConsole 和 VisualVM 是图形化监控工具,可实时查看内存、线程、类加载等信息。在[实际项目]中,我曾用 jstack 排查线程死锁,用 jmap 分析堆内存泄漏。
- 【回答框架 4】选择工具时,命令行工具更轻量,适合服务器环境;图形化工具直观,但需 GUI 支持。具体使用取决于场景,例如线上问题优先用 jstat 和 jstack。
- 【关键点 1】javac、java、jar、javadoc 是基础工具。
- 【关键点 2】jps、jstat、jinfo、jmap、jstack 是常用诊断工具。
- 【关键点 3】JConsole 和 VisualVM 提供图形化监控。
- 【关键点 4】jstack 用于线程分析,jmap 用于堆内存分析。
- 【易错点 1】混淆 jmap 与 jhat 的用途,jhat 用于分析堆转储文件。
- 【易错点 2】在 JDK 9+ 中部分工具已模块化,但命令行使用方式基本不变。
- 【易错点 3】误认为 jcmd 取代所有诊断工具,实际各有侧重。