关于JVM是重点之重,掌握jvm便于我们可以更好的掌握java程序的运行流程,以下我将我自己总结的jvm的一些重点通过图的形式展现给大家,以便于可以更好的来理解。
1.JVM内存分布
在上述图中,主要是总结了JVM的四大构成区域:类加载器,运行时数据区域,执行引擎,本地方法库。并通过流的形式展示了我们写的一个.java源文件是如何被jvm所识别和运行的。
其实主要流程就是:
程序在执行之前,JVM会将源文件通过类加载器加载为class文件,然后将其class文件(二进制)
加载到运行时数据区域,但是class文件只是JVM可以看懂的一套指令集,因此需要执行引擎将其
翻译为底层操作系统可以读懂的指令,在翻译的过程中需要调用本地方法库来辅助操作。
下面我们就将以类加载器,运行时数据区域,执行引擎,本地方法库这四个部分来依次说明其作用
2.类加载器
在类加载器这一部分主要是将.java源文件加载为.class文件并且加载到运行时数据区相关的工作,与此同时还会有有关类加载的过程以及对象的创建流程和双亲委派机制的一些知识点。
类加载器阶段分为:加载,连接,初始化,使用,销毁五个阶段,其中连接又细分为:验证,准备,解析三阶段。
其中对象的创建流程如下:
3.运行时数据区域
3.1.栈
3.2.堆
3.3程序计数器
3.4方法区
4.执行引擎
5.本地方法库
最后的总体结构图:
https://excalidraw.com/#json=qNbcXzZ2qAfgCLCYrZl53,6Z2SWhNf7IdPv4cgfIe9Cw