64位系统:8字节
堆内存加载对象流程图
Operand Stacks(操作数栈)
true
程序计数器
S2
S1
常量池
Eden
类加载机制
Java对象内存布局
一系列的标记为(哈希码,分代年龄,锁状态标志等)
数组对象特有数组长度
Invocation Completion(方法返回地址)
初始化
装载
false
方法区
JVM进行Full GC
链接
boolean和byte : 1字节short和char : 2字节int和float : 4字节long和double : 8字节reference : 8字节 (64位系统)
Old
栈帧1
Length
Mark Word
准备
Old是否有足够空间
堆
结束
Survivor区部分活跃对象复制到Old
本地方法栈
包含了对象的虽有成员变量,大小由各个变量类型决定
新对象申请内存空间
Dynamic Linking(动态链接)
Survivor是否有足够空间
解析
开始
OutofMemoryError
JVM运行时数据区(Run Time data Areas)
4字节
Class文件
为了保证对象的大小为8字节的整数倍
使用
堆内存
栈帧2
对齐填充
验证
执行对象对应的类的元数据的内存地址
虚拟机栈
卸载
Class Pointer
新对象内存申请成功
JVM类加载流程
判断Eden是否有足够的内存空间
Eden区部分活跃对象复制到Survivor
Young
JVM通过Minor GC回收不活跃对象
Local Variables(本地变量表)