JVM的构成 (类加载子系统、执行引擎、运行时数据区)

 

目录

JVM由三部分组成

1. 类加载子系统,可以根据指定的全限定名来载入类或接口。

Java类加载机制_trigger333的博客-CSDN博客_java类加载的机制

2. 执行引擎,负责执行那些包含在被载入类的方法中的指令。

3. 运行时数据区. 

JVM内存结构_trigger333的博客-CSDN博客_jvm内存结构

具体的


JVM由三部分组成

类加载子系统、执行引擎、运行时数据区。

1. 类加载子系统,可以根据指定的全限定名来载入类或接口。

Java类加载机制_trigger333的博客-CSDN博客_java类加载的机制

JVM的构成 (类加载子系统、执行引擎、运行时数据区)_第1张图片

 

2. 执行引擎,负责执行那些包含在被载入类的方法中的指令。

3. 运行时数据区

当程序运行时,JVM需要内存来存储许多内容,例如:字节码、对象、参数、返回值、局部变量、运算的中间结果,等等,JVM会把这些东西都存储到运行时数据区中,以便于管理。而运行时数据区又可以分为方法区、堆、虚拟机栈、本地方法栈、程序计数器。

JVM内存结构_trigger333的博客-CSDN博客_jvm内存结构

JVM的构成 (类加载子系统、执行引擎、运行时数据区)_第2张图片

 

具体的

运行时数据区是开发者重点要关注的部分,因为程序的运行与它密不可分,很多错误的排查也需要基于对运行时数据区的理解。在运行时数据区所包含的几块内存空间中,方法区和堆是线程之间共享的内存区域,而虚拟机栈、本地方法栈、程序计数器则是线程私有的区域,就是说每个线程都有自己的这个区域。

JVM的构成 (类加载子系统、执行引擎、运行时数据区)_第3张图片

 

虚拟机栈描述的是Java方法执行的线程内存模型:每个方法被执行的时候,Java虚拟机都会同步创建一个栈帧用于存储局部变量表、操作数栈、动态连接、方法出口等信息。

每一个方法被调用直至执行完毕的过程,就对应着一个栈帧在虚拟机栈中从入栈到出栈的过程。

 

方法区与堆一样,是各个线程共享的内存区域,它用于存储已被虚拟机加载的类型信息、常量、静态变量、即时编译器编译后的代码缓存等数据。虽然Java虚拟机规范中把方法区描述为堆的一个逻辑部分,但是它却有一个别名叫作“非堆”,目的是与堆区分开来。

运行时常量池是方法区的一部分。Class文件中除了有类的版本、字段、方法、接口等描述信息外,还有一项信息是常量池表,用于存放编译期生成的各种字面量与符号引用。

Stringtable 串池经典面试题_trigger333的博客-CSDN博客

你可能感兴趣的:(Java基础知识,JVM,JVM)