JVM 知识地图
从类加载、运行时内存到垃圾回收与性能排查,理解 Java 程序如何真正运行。
为什么要理解 JVM
JVM 把 Java 源代码和具体硬件隔开,但生产问题最终仍会落到内存、线程、字节码和操作系统资源上。理解 JVM 的目标不是记参数,而是能解释和诊断程序行为。
知识路线
类加载
- 加载、验证、准备、解析和初始化
- 双亲委派模型
- 类加载器隔离
- 静态字段和初始化顺序
运行时数据区
- 堆与对象分配
- 虚拟机栈与栈帧
- 方法区与元空间
- 直接内存
垃圾回收
- 可达性分析
- 分代收集
- CMS、G1 与现代收集器
- 停顿时间、吞吐量和内存占用之间的权衡
性能排查
- GC 日志
- 线程快照
- 堆转储
- CPU、内存和锁竞争定位
一句话原则
先确定现象属于 CPU、内存、线程还是外部依赖,再选择工具;不要看到 OutOfMemoryError 就先调整堆大小。
评论与讨论
回复 :
留下你的想法