摘要: 顺序分配(Sequential allocation) 概述 a又称为指针碰撞(bump pointer allocation),或称为线性分配(linear allocation) b不适用于非移动式回收器 代码示例 sequentialAllocate(n): //开始分配,result和fre 阅读全文
posted @ 2020-05-31 22:30 adeveloper 阅读(337) 评论(0) 推荐(0) 编辑
摘要: 对象内存布局(HotSpot) 概述 布局划分为三部分:对象头(Header)、实例数据(Instance)、对齐填充(Padding) 对象头包含两类信息:用于存储对象自身的运行时数据(Mark Word)和对象指向它的类型元数据的指针(类型指针) 实例数据部分时对象真正存储的有效信息,存储顺序受JVM分配策略参数和字段在java源码中定义顺序的影响, HotSpot默认存储顺序:long/do... 阅读全文
posted @ 2020-05-31 22:28 adeveloper 阅读(271) 评论(0) 推荐(0) 编辑
摘要: 1类加载过程 2、概述 a类加载必须按加载、验证、准备、初始化、卸载顺序按部就班的开始,但有可能会在一个阶段执行的过程中调用、激活另一个阶段 b解析在一些情况下可以在 初始化 阶段以后开始 c加载阶段和连接阶段部分工作交叉进行 d创建好类以后,随时可以进入准备阶段,但必须在初始化阶段开始之前完成(Preparation may occur at any time following creat... 阅读全文
posted @ 2020-05-31 19:07 adeveloper 阅读(206) 评论(0) 推荐(0) 编辑
摘要: 1概述 1.1类文件格式不是必须存在于文件里。 1.2多字节数据项必须严格按照大端在前(big-endian)顺序进行存储(Multibyte data items are always stored in big-endian order,where the high bytes come first) 1.3 Class文件是一组以8字节为基础单位的二进制流,各个数据项严格按照顺序紧凑排列,没... 阅读全文
posted @ 2020-05-31 19:05 adeveloper 阅读(243) 评论(0) 推荐(0) 编辑
摘要: 1概述 a虚拟机的指令由一个字节长度(意味着操作码总数不能超过256条)、代表某种操作含义的数字(操作码,Opcode)以及跟随其后的0至多个代表此操作所需参数的操作数(operand)构成 b因为JVM采用面向操作数栈而不是面向寄存器的架构,所以大多数指令都不包含操作数,只有一个操作码,指令参数都存放在操作数栈中 c操作数的数量以及长度取决于操作码,如果一个操作数的长度超过了一个字节,那么它将会... 阅读全文
posted @ 2020-05-31 18:57 adeveloper 阅读(586) 评论(0) 推荐(0) 编辑
摘要: PS:蓝色块为线程独享空间 1、程序计数器(Program Counter Register) 1.1概述 a当前线程正在执行Java方法,记录所执行的虚拟机指令的地址。否则为空(Undefined)。 b每个线程都有独立的PC, c字节码解释器工作时通过改变PC的值来选取下一条需要执行的字节码指令 d任意时刻JVM线程只会执行一个方法的代码(At any point, each Ja... 阅读全文
posted @ 2020-05-31 18:55 adeveloper 阅读(125) 评论(0) 推荐(0) 编辑