1. java对象创建的方式
2. java对象创建的过程
1) new
2) 检查new指令的参数是否能在常量池中定位到一个类的符号引用
3) 检查这个符号引用代表的类是否已被加载、 解析和初始化过。 如果没有, 那必须先执行相应的类加载过程
4) 在类加载检查通过后, 接下来虚拟机将为新生对象从Java堆中分配内存
5) 内存分配完成后, 虚拟机需要将分配到的内存空间都初始化为零值,保证了对象的实例字段在Java代码中可以不赋初始值就直接使用
6) 虚拟机要对对象进行必要的设置,主要是对象头中的信息,包括:对象是哪个类的实例、 如何才能找到类的元数据信息、 对象的哈希码、 对象的GC分代年龄、是否启用偏向锁
7) init
简:
3. 类加载过程
java类的加载机制_价值成长的博客-CSDN博客_java 加载机制
虚拟机把描述类的数据从 Class 文件加载到内存,并对数据进行校验,解析和初始化,最终形成可以被虚拟机直接使用的 java 类型。
4. java对象的内存分配
5. java对象的并发问题
什么是TLAB?
可以把内存分配的动作按照线程划分在不同的空间之中进行,每个线程在Java堆中预先分配一小块
内存,这就是TLAB(Thread Local Allocation Buffer,本地线程分配缓存) 。虚拟机通过 -
XX:UseTLAB 设定它的。