JVM的体系结构
2022-04-13 11:20:45 7 举报
JVM的体系结构
作者其他创作
大纲/内容
本地方法库
方法出口
.java
user
静态变量分配内存空间,赋予初始值
.......
线程1
扩展类加载器ExtClassLoader
栈帧
类装载器Class Loader
本地方法接口
findClaass
类信息
初始化
销毁
15
操作数栈
类加载的过程
局部变量表
常量池
程序计数器
加载
线程N
伊甸区EdenSpace(8/10)
C2/Graal
栈空间Stack
动态链接
类型指针
find'Class
MinorGC
JVM内存参数
将字符引用替换成直接引用
使用
执行
。。。。。
C1
年轻代-Xmn | 空间大小 | |2048M-XX:NewRatio | 2-XX:SurvivorRatio | 8 8:1:1
本地机器指令
5
FullGC
findClass
线程3
应用程序加载器AppClassLoader
GC
养老区 Old Gen (1/3)
堆空间 Heap
对象在幸存区每转换一次,分带年龄加一
大对象
自定义类加载器
loadClass
CodeCache
堆-Xms | 初始大小 | 1/64 | 3072M-Xmx | 最大空间 | 1/4 | 3072M
逐行解释执行
静态变量
没有空间分配时触发
字节码执行引擎
幸存0区Survivor 0(1/10)
JITJust in Time Compiler
年轻代 young/now (2/3)
准备
线程2
解析
静态变量初始化指定值,执行静态代码块
启动类加载器bootstrapClassLoader
运行时数据区(Runtime Data Area)
修改
校验文件格式
本地方法栈Native Method Stack
FILO
幸存1区Survivor 1(1/10)
编译打包
方法区-XX:MetaspaceSize | 触发GC的初始值 | 21M | 256M-XX:MaxMetaspaceSize | 元空间最大值 | -1 | 256M-XX:PermSize | 永久代的初始大小
Class File
双亲委派机制
1
解释器
验证
栈-Xss | 单线程栈大小 | | 1M
读取字节码文件
STW
方法区/元空间Metaspace
0 条评论
回复 删除
下一页