JVM架构图--详细
2021-06-16 21:07:17 40 举报
JVM架构图主要包括五个部分:类加载器、运行时数据区、执行引擎、本地方法接口和本地方法库。类加载器负责将Java字节码文件加载到内存中,运行时数据区用于存储程序运行时的数据,包括堆、栈、方法区等。执行引擎负责执行字节码指令,将字节码转换为机器码并执行。本地方法接口用于调用操作系统的本地方法,本地方法库则包含了Java虚拟机所需的本地方法实现。
作者其他创作
大纲/内容
Class Files(字节码文件)
放置在form/to区
栈帧二
到对象类型数据的指针
car2
类加载器
初始化Initialization
方法三
Old区放的下?
栈帧中存储
本地方法库
操作栈
动态链接
....
Native Method Stacks本地方法栈
对象分配过程
方法返回地址
域信息
栈
Eden放得下?
getClassLoader()
栈帧-2(方法B)
Metaspace元数据区
局部变量表
线程独占:程序计数器、栈、本地栈程序共享:堆、堆外内存(元空间、代码缓存)
...
扩展类加载器ExtensionClass Loader
S1to
实现方法
Car实例
Eden
附加信息
堆
当前栈
是
s1局部变量
对象实例数据
准备Prepare
动态链接Dynamic Linking
加载并初始化
方法二
晋升至老年代
s2局部变量
否
系统类加载器Ststem Class Loader
验证Verify
运行时常量池
方法一
类加载器子系统Class loader
ClassLoader
对象类型数据
string constans
扩展类加载器Extension Class Loader
Heap堆区
对象存活超过阈值?
栈帧一
S0from
short
reference
Program Counter Register程序计数器
s1实例
java栈
s2实例
运行时数据区(RunningDataArea)
方法元信息
新对象申请
栈顶
方法区
操作数栈Operand Stack
自定义类加载器User Defined Class Loader
虚拟机栈
类型信息
分配对象内存
car3
否,是超大对象
Young区新生代
from区放的下?
int
实例化
应用类加载器ApplicationClass Loader
Car Class
Method Area
局部变量表Local Variables
本地方法接口Native Interface
Major GC老年代区垃圾回收
OOM
栈帧-1(方法A)
链接阶段Linking
slot(变量槽)。32位置占1个槽,32以上占2个槽
启动类加载器--C/C++Bootstrap Class Loader
方法区
加载阶段Loading
栈帧三
栈帧...(方法...)
car1
Car.Class
栈底
CodeCacheJIT编译产物
getClass()
引导类加载器BootStrapClass Loader
为空的是to区
classloader
Minor GC新生代区垃圾回收
class类原信息
Old区老年代
Person person = new Person();
JVM Stacks虚拟机栈
存放调用该方法的pc寄存器的值
方法信息
0 条评论
下一页