JVM结构模型整理

41 阅读1分钟

总体概括的话有类加载子系统、运行时数据区、执行引擎和本地方法接口四大核心模块。 其中

1、类加载子系统负责加载字节码文件,包含加载、链接、初始化三个重要阶段;

  • 加载--查找并读取类文件二进制数据;
  • 链接--验证字节码、分配静态变量内存、解析符号信用;
  • 初始化--执行类构造器方法,完成静态变量赋值。

2、运行时数据区包含线程私有区域和线程共享区域;

  • 线程私有区域又分为程序计数器、虚拟机栈和本地方法栈,可通过-Xss配置栈大小信息;
    • 程序计数器--记录当前线程执行的字节码指令地址,唯一无OOM的区域;
    • 虚拟机栈--存储方法调用的栈帧,包含局部变量表、操作数栈等;
    • 本地方法栈--支持native方法执行的结构。
  • 线程共享区域又分为堆和方法区,可通过-Xmx配置上限参数;
    • 堆--存放对象实例和数组,分为新生代、老年代和元空间;
    • 方法区(元空间)--存储类元数据、常量池等。

3、执行引擎包含解释器、即时编译器和垃圾回收器,负责将字节码转换为机器指令并优化执行效率。
4、本地方法接口(JNI)是提供Java代码调用本地方法的能力。