摘要: 1、对象头(Header) 对象自身运行时数据(mark word):hash 码、GC 分代年龄、锁状态标识、是否偏向锁、线程持有的锁、偏向线程ID、偏向时间戳; 类型指针:对象指向元数据的指针。 mark word: 对象头信息与对象自身定义的数据无关的额外存储成本,考虑到虚拟机的空间效率,对象 阅读全文
posted @ 2020-01-11 12:21 嘿咻、晚安喵 阅读(805) 评论(0) 推荐(0)
摘要: 类加载器: 实现 "通过类的全限定名获取描述此类的二进制字节流" 动作(类加载阶段)的模块。 判断两个类是否相等:类来自相同的 class 文件 && 被同一个虚拟机加载 && 由同一个类加载器加载。 类加载器的种类: 对虚拟机来说,只有启动类加载器(Bootstrap ClassLoader,由 阅读全文
posted @ 2020-01-09 12:22 嘿咻、晚安喵 阅读(124) 评论(0) 推荐(0)
摘要: 类的初始化时类加载的最后一步,此时才开始执行 Java 代码(字节码)。 初始化阶段是开始执行 clinit<>() 方法的过程。 1、clinit<>():由编译器收集类中的类变量赋值操作和 static 代码块中的语句合并产生的,收集顺序与源文件中出现的顺序决定;static 语句块只能访问到在 阅读全文
posted @ 2020-01-08 18:26 嘿咻、晚安喵 阅读(255) 评论(0) 推荐(0)
摘要: 类的生命周期: 类从被加载到虚拟机内存中开始,到卸载出内存结束。生命周期包括:加载、验证、准备、解析、初始化、使用、卸载;其中验证、准备、解析称为连接。 加载、验证、准备、初始化、卸载,这几个阶段的顺序是确定的,类的加载过程必须按照这个顺序按部就班的开始;解析阶段不一定,某些情况下可以在初始化阶段之 阅读全文
posted @ 2019-11-26 16:40 嘿咻、晚安喵 阅读(154) 评论(0) 推荐(0)