• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

关于java:11-java创建对象的过程

java 搞代码 4年前 (2022-01-27) 19次浏览 已收录 0个评论

1.类加载查看:
(查看是否被加载过,没被加载过要进行类加载)
首先将去查看这个指令的参数是否能在常量池中定位到这个类的符号援用,并且查看这个符号援用代表的类是否已被加载过、解析和初始化过。如果没有,那必须先执行相应的类加载过程。
2.分配内存:
(把一块内存从堆里调配进去,尺寸在类加载完就可确定,
gc收集器serial、parnew->来源gaodai#ma#com搞*!代#%^码网标记-整顿算法->堆内存规整->指针碰撞调配法->用过的在一边,边上放个指针,分配内存时指针挪一下,
gc收集器cms->标记-革除算法->堆内存不规整->闲暇列表法->保护一个可用区域列表,分配内存时找一块而足够大的中央,而后更新列表)
内存调配并发
CAS+失败重试
TLAB: 为每一个线程在Eden区调配一块儿内存,分配内存时先在这调配,不够了再cas+重试
3.初始化零值:
将调配到的内存空间都初始化为零值(不包含对象头),保障了对象不赋初值就能够间接用
4.设置对象头
对象是哪个类、如何找这个类的元数据信息、对象的哈希码、对象的 GC 分代年龄等信息寄存在对象头中。依据虚拟机以后运行状态的不同,如是否启用偏差锁等,对象头会有不同的设置形式。
5.执行 init 办法
初始化对象


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:关于java:11-java创建对象的过程
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址