
jvm虚拟机
bug小白
学习+记录
展开
-
JDK1.8——Java对象的创建过程
对象的创建Java是一门面向对象的编程语言,Java程序运行过程中无时无刻都有对象被创建出来。对象创建过程概述对象的创建过程如图:这里解释一下什么是符号引用:符号引用: 符号引用是一个字符串,它给出了被引用的内容的名字并且可能会包含一些其他关于这个被引用项的信息——这些信息必须足以唯一的识别一个类、字段、方法。这样,对于其他类的符号引用必须给出类的全名。对于其他类的字段,必须给出类名、字段名以及字段描述符。对于其他类的方法的引用必须给出类名、方法名以及方法的描述符。这样我们就能根据符号引用锁定原创 2020-08-16 20:22:20 · 6889 阅读 · 0 评论 -
JDK1.8——Java对象的访问定位:对象的访问方式,句柄访问、指针访问、reference
创建对象自然是为了后续使用该对象,我们的Java程序会通过栈上的reference数据来操作堆上的具体对象。 对象的访问方式是由虚拟机的实现而决定的,主流的访问方式主要有两种:通过句柄 和 使用指针通过句柄访问使用句柄访问,Java堆中将可能会划分出一块内存用来作为句柄池,reference中寸的就是对象的句柄地址,而句柄中包含了对象实例数据与类型数据各自具体的地址信息。具体结构如图:使用直接指针访问(常用)使用直接指针访问,Java堆中对象的内存布局就必须考虑如何防止访问类型数据的相关信息,r原创 2020-08-15 00:29:10 · 7255 阅读 · 2 评论 -
JDK1.8——Java对象在堆内存中的存储布局:对象头(Header)、实例数据(Instance Data)、对齐填充(Padding)
对象在堆内存中的存储布局可以划分为三个部分:对象头(Header)、实例数据(Instance Data)和对齐填充(Padding)。对象头(Header)对象头分为两类信息:一类是用于存储对象自身的运行时数据,一类是类型指针。第一部分是用于存储对象自身的运行时数据,如哈希码(HashCode)、GC分代年龄、锁状态标志、线程持有的锁、偏向线程ID、偏向时间戳等。 这部分数据的长度在32位和64位的虚拟机(未开启压缩指针)中分别为32个比特和64个比特,官方称它为"Mark Word"第二原创 2020-08-13 23:16:41 · 7661 阅读 · 0 评论