思考:java对象是什么?
java对象是类的一个实例,类是java对象模板
java对象的加载顺序:
一、Java对象如何申请内存呢?
1.指针碰撞:使用区扩大,空闲区3缩小
步骤:分配内存,移动指针
2.空闲列表:由于内存空间的占用情况并非均匀的,并不能按照指针平移的方式分配内存
空闲列表中维护了内存中不连续的空闲内存的地址
步骤:分配内存,修改空闲列表
以上两种方式都会引起并发问题,多个线程来分配内存,通过CAS验证方式来处理这个问题
剩余过程:
将分配的内存空间初始化为0
设置对象头信息,比如对象的哈希码
执行对象的init方法(static方法)
二、java对象结构
三、如何访问对象?
1.直接指针访问
2.句柄访问,在堆中开辟一块句柄池
两种访问方式对比:
垃圾回收效率:句柄访问垃圾回收时只需要更新句柄池,垃圾回收效率高
访问效率:直接访问效率更高,少了一次指针