0、前言
此文所有讨论基于 HotSpot VM
1、运行时数据区概览

JAVA 中有个 Runtime 类表示了运行时环境(每个 JVM 进程对应唯一的一个 Runtime 对象)

2、多线程和系统线程的对应模型
JAVA 是支持多线程的,学过 OS 就知道,操作系统中内核级别的线程和用户级别的线程是有映射关系的(一对一、一对多、多对多),JVM 中的线程是需要映射和对应到本地操作系统的实际线程,对应的方式由不同的 JVM 实现方式(即不同的虚拟机)来决定,下面贴一段《操作系统概念》里面的原话,这些知识具体可参考此链接

HotSpot使用的是一对一的模型

3、程序计数器


两个问题:
1)为什么要使用 PC寄存器 or 使用 PC寄存器有什么好处?

2)PC寄存器为什么是每个线程私有这种设定?

4、虚拟机栈

栈的优点

栈的运行原理:


栈帧的基本内容:

局部变量表、操作数栈、方法返回地址、附加信息 => 参考链接
动态链接 => 参考链接
5、本地方法栈
本地方法栈与虚拟机栈的作用是一样的,区别在于虚拟机栈为虚拟机执行java方法服务,而本地方法栈为虚拟机执行native方法服务,native方法为本地方法,不是用java语言写的有可能是c或者c++写的,在jdk中就有很多c的代码,就是提供给本地方法来调用的。