- 博客(3)
- 收藏
- 关注
原创 java对象的内存布局
1. 组成 java对象在内存中的储存布局可以分为:对象头(Object Header)、实例数据(Instance Data)以及对齐填充(padding) 1.1 对象头(Object Header) 对象头中储存两类信息 第一类储存的是对象运行时的数据(mark word),。例如:哈希码(HashCode)、GC粉黛年龄、锁标志状态、线程持有的锁、偏向锁ID、偏向时间戳等,在32和64位虚拟机中分别占32bit和64bit,在32位Hot-Spot虚拟机中,对象未被同步锁锁定的情况下,32bit储
2021-07-25 21:59:18 72
原创 java对象的创建过程
#1. 对象的创建 揭秘对象创建的过程new Object() 1.1 检查 在创建对象之前,会检查该对象的类的符号引用能否在常量池中定位到,如果能定位到,再继续检查该符号引用代表的类是否已经被加载、解析和初始化,如果没有定位到,就需要执行相应类加载过程。 1.2 分配 在上面的检查操作执行完之后,会对新生对象进行内存分配,分配的内存大小在类加载时已经确定(类加载知识应该会讲到咋确定的,我现在也不确定它是咋确定的),内存的具体分配操作有两种 1.2.1 具体分配操作一(指针碰撞) 指针碰撞的假设是,j
2021-07-25 16:59:56 101
原创 jvm内存结构
JVM内存结构 程序技术器 介绍: 是一块很小的内存空间,可以看作当前线程的所执行的字节码的行号指数器,字节码解释器需要通过改变这个计数器的值来选取下一条需要执行的字节码指令。 分支、循环、跳转、异常处理、线程恢复等操作都依赖程序技术器。 每个线程都拥有独立的程序计数器。 如果正在执行的是本地方法(native),那么计数器的值为空 特点:线程私有,唯一不存在内存溢出的区域 java虚拟机栈 介绍: 虚拟机栈描述的是java线程的内存模型 线程中每个方法执行的时候都会创建栈帧用于存储局部变量表、操作
2021-07-24 15:52:53 82
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人