jvm虚拟机
2022-05-27 16:06:54 1 举报
JVM虚拟机内存结构
作者其他创作
大纲/内容
A
Region1
虚拟机栈VM Stack
使用Using
H
未被使用的空间
解析Resolution
否
B1
类
堆Heap存储实例对象
对象A
栈帧1
验证Verification
自定类加载器(User ClassLoader)
返回出口
GC Root
返回
B
运行时数据区
G1
未被GC Root引用的对象
Region2
栈帧N
Survivor
执行引擎
移动
Form
标记
局部变量表
类、常量、静态变量
年轻代
Rset
方法区元空间Method Area
ParNew
本地方法库
Eden
To
To1/10
E
S
O
卸载Unloading
父类在次判断是否有父类
线程隔离的数据区
ParallelScavenge
清理
动态连接
执行复制后
堆
是否加载成功
C
A+1
被GC Root引用的对象
Shenandoah
Minor GC
方法栈GC Root
Major GCFull GC
ZGC
Eden年轻代8/10
为JVM调用native即本地方法服务
Card
年轻代GC+并发标记过程
程序计数器Program Counter Register当前线程执行到的字节码行号
当前栈帧
classloder1
From
CMS
年轻代占用堆空间1/3
Survivor区
$JAVA_HOME/jre/lib/ext
栈帧2
本地库接口
运行时常量池
清除
ParallelOld
tos1
加载Loading
对象
老年代
操作数栈
B2
对象C
本地方法栈Native Method Stack
自下而上检查类是否已加载
A1
方法区元空间
C语言实现
ClassPath
记录Region2的A2对应引用了A1对象
GC ROOT
Humongous
froms1
A.class
classloder2
$JAVA_HOME/jre/lib
标记清除标记整理
A2
混合回收
From1/10
GC Root
老年代占用堆空间2/3
让子类加载类
是否有父类加载器
堆Heap
准备Preparation
操作栈
复制算法
用类器加载类
Old
年轻代GC
是
初始化Initialization
栈帧3
扩展类加载器(Extension ClassLoader)
启动类加载器(Bootstrap ClassLoader)
由所有线程共享的数据区
方法1
连接(Linking)
返回地址
应用程序类加载器(Application ClassLoader)
方法3
委托给父类
方法2
Full GC
Serial
未被使用
执行复制前
Eden区
自上向下尝试加载类
线程Thread
Serial OLD(MSC)
0 条评论
回复 删除
下一页