JVM 体系结构

JVM 体系结构分为三部分:
1. 类加载器(ClassLoader):用于装载 .class 文件
2. 执行引擎:用于执行字节码,或者执行本地方法
3. 运行时数据区:包括方法区、堆、Java 栈、PC 寄存器、本地方法栈

程序计数器
占用很小的内存空间,可以看做是当前线程所执行的字节码的行号指示器。
JVM 的多线程是通过线程轮流切换并分配处理器执行时间的方式来实现的,在任何一个时刻一个处理器(或多个处理器的一个内核)只会执行一个条线程的指令。程序计数器用于在线程切换后为了恢复在正确执行的位置(正在执行的字节码指令的地址)。
每个线程都需要一个独立的程序计数器,它的生周期与当前线程相同。
虚拟机栈
JVM 栈是线程私有的,每个线程创建的同时都会创建 JVM 栈,JVM 栈是以栈帧为数据单元。
栈帧中存放着局部变量表(Java 中定义的八种基本类型:boolean、char、byte、short、int、long、float、double 和引用类型 —— 一个指向堆上的地址)、返回地址以及操作数栈。
每一个方法被调用直至执行完成的过程,就是对于的一个栈帧在虚拟机栈中从入栈到出栈的过程。
每个线程都有一个独立的栈,生命周期与当前线程相同。

This chapter requires login to view full content. You are viewing a preview.
Login to View Full Content