返回

Java - 对象的创建过程

发布时间:2023-02-04 04:10:34 316
# 数据# 信息

Java 对象的创建过程(new 的过程)

  1. 在静态常量池中找到对应类的符号引用,检查该类是否被加载、解析,初始化(判断类是否加载);
  2. 加载后,分配内存(指针碰撞 或者 空闲链表);
  3. 零化内存空间;
  4. 设置对象头(分代年龄,类型指针等);
  5. 方法;

对象在内存中存储的布局

  • 对象头;

1. MarkWord:对象自身运行时数据,比如:hashcode,GC 分代年龄,锁状态信息等

2. 类型指针:指向类元数据的指针

  • 实例数据:有效值
  • 对齐填充:占位符

对象的定位访问

  • 句柄访问

 

Java - 对象的创建过程_数据

 

 

  • 直接指针访问

 

Java - 对象的创建过程_数据_02

 

 

对象内存分配方法

 

1. 指针碰撞:

 

适用于内存整齐的情况[ GC 算法:标记-整理 compact][ 新生代],已使用在一边,未使用在一边,分配内存既是指针移动。

 

2. 空闲列表:

 

已分配与未分配内存相互交错[ GC 算法:标记-清理 sweep][ 老年代],用链表记录空闲内存块,根据空闲列表分配内存。

 

 

 

 

 

 

特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报
评论区(0)
按点赞数排序
用户头像
精选文章
thumb 中国研究员首次曝光美国国安局顶级后门—“方程式组织”
thumb 俄乌线上战争,网络攻击弥漫着数字硝烟
thumb 从网络安全角度了解俄罗斯入侵乌克兰的相关事件时间线