JVM(Java虚拟机)
JVM(Java Virtual Machine)Java虚拟机是学习Java的一个重要知识点,所以我们来开启JVM的学习之路吧!
PS:本文需要一些Java基础才能更好的理解
JVM体系结构
JVM的学习就先从体系结构开始,结构如下图
- 字节码文件(Class files)——字节码文件是我们在编译源文件(.java)之后产生的
- 类加载器(Class Loader)——通过解析字节码文件的类相关的信息,并通过类加载器加载所有需要的信息
- 运行数据区(Runtime Data Area)——该区域是在Java程序运行的时候使用到的数据的存放、执行位置等
- 方法区(Method Area)——方法区通常存放比较稳定的共享资源(单进程内),例如:类信息、字面量、常量等
- 堆(heap)——通常存储可回收的共享资源(单进程内),例如:大部分对象、数组元素等
- Java栈(Java stack)——存储线程内使用资源,并且线程私有,存储的资源有:基础数据类型、部分引用数据类型的数据、部分引用数据类型的引用等
本地方法栈(Native Method Stack)——Java在使用某些方法的时候,会调用一些native的方法,如图:
- 程序计数器(Program Counter Register)——程序计数器为线程,线程私有,记录程序执行的位置,当程序执行到本地方法的时候程序计数器置为undefined
- 执行引擎(Execution Engine)——执行引擎负责执行字节码的运行逻辑
- 本地方法接口(Native Interface)——让Java有着更好的扩展能力,利用C/C++等实现的高效代码来为Java程序提供良好的扩展实现,Java程序本身通过直接调用即可完成。
总结
这期非常简单的介绍了一些JVM的体系结构,希望可以给大家抛砖引玉的作用,感兴趣的小伙伴自行查找资料。之后不定期的围绕虚拟机进行展开交流。