主流 JVM 虚拟机介绍
为什么需要了解各种 JVM 实现
JVM 是一份规范,但这份规范有不同的实现。每个实现都有自己的设计目标、适用场景和技术特点。
你可能在生产环境中用的是 Oracle JDK(内置 HotSpot),但 IBM 的 WebSphere 用的是 J9,Android 用的是 Dalvik,未来的趋势可能是 GraalVM。了解这些实现的差异,能帮助你:
- 选型决策:根据场景选择合适的 JVM
- 理解原理:不同实现对比能让你更深刻地理解 JVM 的核心概念
- 排查问题:知道 JVM 的「出身」,能更快定位问题来源
JVM 实现全景图
┌─────────────────────────────────────────────────────────────┐
│ JVM 规范(规范) │
│ 《Java Virtual Machine Specification》 │
├─────────────────────────────────────────────────────────────┤
│ │
│ SUN Classic / Exact VM 1996-2002 最早但已淘汰 │
│ ↓ │
│ HotSpot VM 1999-至今 Oracle JDK / OpenJDK │
│ ↓ │
│ JRockit VM / IBM J9 VM 2000s-今 企业级 JVM │
│ │
│ GraalVM 2018-至今 新一代高性能 VM │
│ Dalvik VM 2008-2017 Android 专属 │
│ 其他 JVM 各有特色 │
│ │
└─────────────────────────────────────────────────────────────┘章节导航
| 文章 | 内容概要 |
|---|---|
| SUN Classic/Exact VM | Java 最古老的两款虚拟机,现代 JVM 的奠基者 |
| HotSpot VM | 当之无愧的主流,JDK 默认内置,深入讲解其核心特性 |
| JRockit/IBM J9 VM | 两款企业级 JVM,各自在高端领域有独门绝技 |
| KVM/CDC/CLDC/Azul/Liquid VM | 移动/嵌入式/JIT 黑科技,了解 JVM 的多样性 |
| Apache Harmony/Microsoft/TaobaoJVM | 国产力量和历史过客 |
| Dalvik/GraalVM | Android 的选择 & JVM 的未来 |
建议按顺序阅读:先从 HotSpot 入手了解主流,再看其他实现做对比和扩展。
一点说明
本系列文档讨论的 JVM 行为和调优参数,如无特殊说明,均以 HotSpot 为准。HotSpot 是目前使用最广泛的 JVM,理解 HotSpot 就理解了 JVM 的大部分内容。
