根据jvm规范,jvm的整体架构包含2个子系统和2个组件
两个子系统:
1.Class loader 类装载器子系统
2.Execution engine 执行引擎子系统
两个组件:
1.Runtime data area 运行时数据区
2.Native interface 本地接口
Class loader作用
根据给定的全限定名类名(如java.lang.Object)将class文件的内容装载到Runtime data area 中的method area(方法区)。Java 程序员可以继java.lang.ClassLoader 类来写自己的Class loader。
Execution engine作用
执行classes 中的指令。任何JVM specification 实现(JDK)的核心是Execution engine, 换句话说:Sun 的JDK 和IBM 的JDK 好坏主要取决于他们各自实现Execution engine 的好坏。每个运行中的线程都有一个Execution engine 的实例。
Native interface作用
与native libraries 交互,是其它编程语言交互的接口。
Runtime data area作用
jvm内存所在区域,主要包括五个部分:Heap (堆), Method Area(方法区域), Java Stack(java栈), Program Counter(程序计数器), Native method stack(本地方法栈)。Heap 和Method Area 是被所有线程的共享使用的;而Java Stack, Program Counter 和Native method stack 是以线程为粒度的,每个线程独自拥有。
两个子系统:
1.Class loader 类装载器子系统
2.Execution engine 执行引擎子系统
两个组件:
1.Runtime data area 运行时数据区
2.Native interface 本地接口
Class loader作用
根据给定的全限定名类名(如java.lang.Object)将class文件的内容装载到Runtime data area 中的method area(方法区)。Java 程序员可以继java.lang.ClassLoader 类来写自己的Class loader。
Execution engine作用
执行classes 中的指令。任何JVM specification 实现(JDK)的核心是Execution engine, 换句话说:Sun 的JDK 和IBM 的JDK 好坏主要取决于他们各自实现Execution engine 的好坏。每个运行中的线程都有一个Execution engine 的实例。
Native interface作用
与native libraries 交互,是其它编程语言交互的接口。
Runtime data area作用
jvm内存所在区域,主要包括五个部分:Heap (堆), Method Area(方法区域), Java Stack(java栈), Program Counter(程序计数器), Native method stack(本地方法栈)。Heap 和Method Area 是被所有线程的共享使用的;而Java Stack, Program Counter 和Native method stack 是以线程为粒度的,每个线程独自拥有。