深入理解JVM,就必须了解JVM的结构。
下图展示了JVM的主要结构:
可以看出,JVM主要包括四个部分:
第一部分:类加载器(Class Loader)
第二部分:执行引擎(Execution Engine)
第三部分:运行时数据区(Runtime Data Area,也称内存区),内存区又包含:
(1)方法区(Method Area)
(2)堆(HEAP)
(3)Java虚拟机栈(Java VM Stack)
(4)程序计数器(Program Counter Register,亦简称PC Register)
(5)本地方法栈(Native Method Stack)
- 第四部分:本地方法接口(Native Interface)
注意点强调:
在运行时数据区,方法区和堆是所有Java线程共享的,而Java虚拟机栈、本地方法栈和程序计数器则是每个线程私有的。
(1)类是如何加载?加载的机制是什么?--》入口(未完待续)
(2)运行时数据区,每个区都存放着什么信息?各自的功能有哪些?--》入口(未完待续)