JVM体系结构与工作方式
体系结构
- 核心–>指令集,即cpu用来计算和控制系统的一套指令的集合,又分为RISC和CISC,精简指令集和复杂指令集
- JVM基本上可以分为4大部分
- 类加载器
每个类型都有对应的Class类的实例 - 执行引擎
解析jvm字节码指令得到结果,每个java线程都是一个执行引擎的实例 - 内存区
重点!!! 方法区和java堆所有线程共享,但是每个线程都有一个单独的java栈来保存线程的状态和一个pc寄存器来指向下一条指令 - 本地方法调用
为本地的c/c++方法预留的空间
工作机制
- JVM为什么选择基于栈
一般来说,栈比寄存器开销要大得多。但是jvm要设计成平台无关,所有的设备都支持栈,但不是所有都有足够的寄存器。另一方面也是为了保证指令的紧凑性 - pc寄存器指向要执行的下一条指令,再根据下一条指令进行进出栈操作,执行完毕后,此方法对应的所有部件都会被JVM回收。而方法调用时,会为调用方法创建一个全新的栈帧,并将pc寄存器重置为0