Java虚拟机的基本结构
jvm它包含以下部分
第一个:类加载系统
类加载子系统,负责类的加载。类加载器有三种类型:引导类加载器、扩展类加载器、应用程序类加载器。
第二个:运行时数据区
包含了程序计数器、Java虚拟机栈、本地方法栈、堆 、方法区。
程序计数器:记录当前线程所执行的字节码指令的位置,线程私有
Java虚拟机栈:局部变量、操作数栈、动态连接、方法返回地址,线程私有
本地方法栈:为本地方法服务,存储相关执行信息,线程私有
堆:存储对象实例和数组,所有线程共享
方法区:存放常量、静态变量、类的信息,所有线程共享
第三个:执行引擎
执行引擎负责将JVM加载的字节码转换为机器指令执行,支持跨平台兼容性。包含了解释器、即时编译器、垃圾回收器
第四个:本地接口
本地接口是Java虚拟机与本地代码交互的桥梁,允许Java调用C/C++等编写的本地方法,用于性能优化或底层系统交互。访问底层操作系统API、调用硬件驱动、集成遗留系统代码库等场景中使用。
第五个:元空间 (JDK8及之后的版本)
jdk8引入的概念,它是用来存储类的元数据的区域,取代了之前的永久代(PermGen)。
下面是整理的脑图