JVM-Java创建对象过程
关键字:类加载过程、内存分配 指针碰撞法、空间列表法、CAS、TLAB、初始化、对象头
Java对象创建方式(不包含数组和Class对象创建):
- new指令
- 反射调用
- 反序列化
对象创建过程
- 遇到new指令,能否通过在常量池定位到符号应用,并检测该符号应用对应类是否已经被加载、否则触发类加载过程(加载、链接,初始化)
- 分配内存,JVM根据垃圾回收期选取内存分配算法: (1)指针碰撞法(serial,ParNew等带有压缩功能的回收器,内存是连续的,内存指针移动基于对象大小移动)、(2)空闲列表法(CMS,通过维护一个空间内存列表,存放对象)、分配内存还需考虑并发申请内存问题(CAS、TLAB本地线程缓冲)