01 2022 档案
摘要:Java程序通过栈上的reference数据来操作堆上的具体对象。reference类型在是一个指向对象的引用,它通过什么方式去定位、访问到堆中对象的具体位置,是由虚拟机实现而定的,主流的访问方式主要有使用句柄和直接指针两种 使用句柄 在Java堆中划分一块内存作为句柄池,reference中存储的
阅读全文
摘要:对象在堆中的存储布局可分为三部分:对象头、实例数据和对齐填充。 对象头 对象头包括两类信息。第一类用于存储对象自身的运行时数据,如哈希码、GC分代年龄、锁状态标志、线程持有的锁、偏向线程ID、偏向时间戳等。 另一类是类型指针,指向对象的类型元数据,JVM通过这个指针判断它是哪个类的实例。如果对象是J
阅读全文
摘要:类的创建过程 new一个对象时,首先检查该指令的参数是否能在常量池中定位到一个类的符号引用 检查该符号引用代表的类是否已被加载、解析和初始化。若没有,则执行相应的类加载过程。 类加载检查通过后,进行内存的分配。 将分配到的内存空间(不包括对象头)都初始化为零值。 对对象进行必要的设置(设置对象头信息
阅读全文