栈、堆和方法区的相互关联
2022-02-22 10:33:38 10 举报
对象创建对应在栈、堆和方法区的引用关联,以及相关知识
作者其他创作
大纲/内容
类型指针Klass-pointer
new People()实例对象
dog
People的Klass类元信息
注意:对象的锁信息就存在于对象头的Mark-Work中,Mark Word用于存储对象自身的运行时数据,如哈希码(HashCode)、GC分代年龄、锁状态标志、线程持有的锁、偏向线程 ID、偏向时间戳等等。
people
栈帧
new Dog()实例对象
张三
name
局部变量表
一些附加信息
运行时元数据Mark-Word
操作数栈
public class People { private String name; private int age = 10; private Dog dog; { name = \"张三\"; } public People() { this.dog = new Dog(); } public static void main(String[] args) { People people = new People(); }}class Dog{}
age=10
实例数据
main线程的栈
方法区
对齐填充
类型指针
堆空间
Hashcode值GC分代年龄锁状态标志锁计数器......
父类的实例数据
Dog的Klass类元信息
args
说明:对象的创建与OOP-Klass模型可参考https://www.cnblogs.com/thiaoqueen/p/9314745.html
方法返回地址
......其他结构数据
动态链接
对象头(Header)
字符串常量池
0 条评论
下一页