JVM虚拟机的整体流程

JVM的整体流程图JVM虚拟机的整体流程

从图中可以看出 JVM 的主要组成部分
ClassLoader(类加载器),Runtime Data Area(内存),Execution Engine(执行引擎),Native Method Library(本地库接口)。

1 ClassLoader

**负责将class文件加载到Runtime Data Area内存)中。只负责class 文件的加载,至于它是否可以运行,则由 Execution Engine(执行引擎) 决定。

2 Runtime Data Area

**Runtime Data Area 是存放数据的,分为五部分:Stack(虚拟机栈),Heap(堆),Method Area(方法区),PC Register(程序计数器), Native Method Stack(本地方法栈)。几乎所有的关于 Java 内存方面的问题,都是集中在这块。

3 Execution Engine

**执行引擎,也叫 Interpreter。Class 文件被加载后,会把指令和数据信息放入内存中,Execution Engine 则负责把这些命令解释给操作系统,即将 JVM 指令集翻译为操作系统指令集。GC(垃圾回收机制)也在其中

4 Native Interface

**负责调用本地接口的。他的作用是调用不同语言的接口给 JAVA 用,他会在 Native Method Stack 中记录对应的本地方法,然后调用该方法时就通过 Execution Engine 加载对应的本地 lib。原本多用于一些专业领域,如JAVA驱动,地图制作引擎等,现在关于这种本地方法接口的调用已经被类似于Socket通信,WebService等方式取代。
执行引擎及本地方法接口不过多进行介绍,我们重点关注其余两个部分:
|-----ClassLoader : 类加载器相关知识点,包括类的双亲委派加载机制,加载过程等。
|-----Runtime Data Area : JVM 内存管理相关知识点,包括内存划分、常用设置、JVM 调优、垃圾回收及常见内存溢出问题的排查解决等。