Java虚拟机(Jvm)整体结构
2025-10-21 06:36:51 0 举报
最详细的jvm整体结构
作者其他创作
大纲/内容
JIT编译器作用是将亨节码翻译成操作系统能够执行的CPU指令,可以通过JVM参数来设置选择解释执行或是编译执行
full GC
为JVM调用本地(Native)方法服务
Survivor11/10
加载
栈帧
局部变量表
准备(Preparation)
java虚拟机栈
线程私有
堆是所有线程共享,用于存放对象实例和数组。是垃圾回收的主要区域
存储的是 符号引用。这些符号引用是在编译期就确定的;包括类和接口的全限定名、字段的名称和描述符、方法的名称和描述符
分析器
本地方法栈
运行时数据区
中间代码生成器
main栈帧
线程共有区
一个后进先出的栈,用于存储方法执行过程中的中间计算结果和计算参数的临时存储空间
即时编译器编译后的代码
引导类加载器(BootstrapClassLoader)
方法区(元空间JDK 8+)
本地方法接口
程序计数器
jvm会为每个线程开辟独立的栈空间。每当线程调用一个方法时,JVM 就会在该线程的栈上压入一个新的栈帧。每个栈帧都是一个独立的数据结构,用于存储特定方法执行所需的所有信息
类加载子系统
方法出口
操作数栈
存放了编译期可知的各种基本数据类型
即时(JIT)编译器
Survivor01/10
java源代码
应用类加载器(Application ClassLoader)
.class字节码文件
静态常量
(GC主要区域)
Java虚拟机(JVM)整体结构
新生代(Yong GC)1/3
每条线程都有一个独立的程序计数器。当前线程所执行的字节码的行号指示器,它是程序控制流的指示器,分支、循环、跳转、异常处理、线程恢复等基础功能都需要依赖
动态链接
15次
方法元信息
Eden区 8/10
扩展类加载器(Extension ClassLoader)
垃圾回收
Heap 堆
执行引擎
目标代码生成器
编译
minor GC
Java编译器
main线程
运行时常量池
被加载
定义方法退出后,应该回到哪里继续执行。
代码优化器
解析(Resolution)
虚拟机栈
Java标准类库(javaSE)
线程B
验证(verification)
类元信息
连接
栈帧1
初始化(initialization)
解释器
线程A
老年代(Old GC)2/3
指向运行时常量池中该栈帧所属方法的引用。它的工作就是在运行时将符号引用解析为直接引用。
负责将Java字节码文件逐条解释并执行
方法区在逻辑上是堆的一部分但垃圾回收器不会对其进行垃圾收集或压缩
代码和数据写入
本地方法库(非JVM)
0 条评论
下一页