主题
面试速答(先看这里)
**一句话结论:**Dump是Java虚拟机的 运行时快照 。
60秒标准回答:
Dump是Java虚拟机的 运行时快照 。将Java虚拟机运行时的状态和信息保存到文件
线程Dump ,包含所有线程的运行状态。纯文本格式
堆Dump ,包含线程Dump,并包含所有堆对象的状态。二进制格式
**答题顺序:**结论 → 原理/机制 → 关键流程 → 场景与取舍 → 易错点
回答主线:
- **Java Dump有什么用?:**补足传统Bug分析手段的不足: 可在任何Java环境使用;信息量充足。
- **使用Java虚拟机制作Dump:**指示虚拟机在发生内存不足错误时,自动生成堆Dump
- **使用图形化工具制作Dump:**使用JDK(1.6)自带的工具:Java VisualVM。
- **使用命令行制作Dump:**jstack :打印线程的栈信息,制作线程Dump。
**记忆锚点:**Dump → Java → Bug → VisualVM → 线程Dump → jstack
易错提醒:
- 补足传统Bug分析手段的不足: 可在任何Java环境使用;信息量充足。
- 如何制作Java Dump 使用Java虚拟机制作Dump 指示虚拟机在发生内存不足错误时,自动生成堆Dump 使用图形化工具制作Dump 使用JDK(1.6)自带的工具:Java VisualVM。
追问准备:
- 围绕「Dump」:底层原理是什么?使用时有哪些边界和常见坑?
- 围绕「Java」:底层原理是什么?使用时有哪些边界和常见坑?
- 围绕「Bug」:底层原理是什么?使用时有哪些边界和常见坑?
- 如果线上出现异常,你会如何定位、验证并规避?
Dump是Java虚拟机的运行时快照。将Java虚拟机运行时的状态和信息保存到文件。
线程Dump,包含所有线程的运行状态。纯文本格式。
堆Dump,包含线程Dump,并包含所有堆对象的状态。二进制格式。
Java Dump有什么用?
补足传统Bug分析手段的不足: 可在任何Java环境使用;信息量充足。 针对非功能正确性的Bug,主要为:多线程幵发、内存泄漏。
扩展知识
如何制作Java Dump
使用Java虚拟机制作Dump
指示虚拟机在发生内存不足错误时,自动生成堆Dump
plain
-XX:+HeapDumpOnOutOfMemoryError使用图形化工具制作Dump
使用JDK(1.6)自带的工具:Java VisualVM。
使用命令行制作Dump
jstack:打印线程的栈信息,制作线程Dump。
jmap:打印内存映射,制作堆Dump。