目录
JVM 虚拟机的位置

JVM 是运行在操作系统之上的,它与硬件没有直接的交互
JVM 虚拟机的体系结构

JVM 运行时数据区

虚拟机栈
- 栈是线程私有的,栈的生命周期与线程相同
- 它存放的数据:主要存放局部变量。局部变量可以是:基本数据类型(
boolean、byte、char、short、int、float、long、double)和引用类型(reference类型)
栈的运行原理

- 每个线程都有自己的栈,栈中的数据都是以栈帧的格式存在
- 在这个线程上正在执行的每个方法都对应一个栈帧
- 栈帧是一个内存区块,是一个数据集,维系着方法执行过程中的各种数据信息
JVM直接对栈的操作只有压栈和出栈,遵循先进后出原则- 如果在该方法中调用了其他方法,对应的新的栈帧会被创建出来,放在栈的顶端,成为新的当前栈帧
Java方法有两种返回的方式,一种是正常的函数返回,使用return指令;另外一种是抛出异常。不管使用哪种方式,都会导致栈帧被弹出
示例
public class StackFrameTest {
public static void main(String[] args) {
try {
StackFrameTest test = new StackFrameTest();
test.method1();
} catch (Exception e) {
e.printStackTrace();
}

本文详细介绍了Java虚拟机(JVM)的体系结构,包括运行时数据区的各个部分如虚拟机栈、本地方法栈、程序计数器、堆和方法区。探讨了对象的创建过程、访问定位方式,以及类加载机制,包括类加载子系统的作用、加载过程和类加载器的双亲委派模型。
最低0.47元/天 解锁文章
1881





