JVM 是 Java Virtual Machine(Java虚拟机)的缩写,它是一种规范,HotSpot VM是其最主流的实现(其他实现),通常我们讨论JVM如果没有特意说明是何种实现,便指的是HotSpot VM。JVM也并非仅支持Java语言,任何可编译为字节码的编程语言能可以运行在JVM上,例如前不久谷歌在 I/O 2017宣布将作为 Android 开发 First-Class 语言的 Kotlin。JVM定义了一些运行时数据区以便执行程序时候所用,一部分数据区在虚拟机启动时创建,在虚拟机退出时销毁,另外一些数据区是针对每个线程的,这些数据区是和线程的生命周期相同,即随着线程的创建而创建销毁而销毁。理解这些区域对于进一步理解JVM和编写并发程序是非常重要的,本文将结合作者自己的理解对各区域做一粗浅的解析,不对之处,望指出,共勉。