当前位置: 首页 > wzjs >正文

蛋糕店网站建设做好网站建设对企业有什么作用

蛋糕店网站建设,做好网站建设对企业有什么作用,精准扶贫网站建设的意义,云南网站定制1. java对象创建流程(大白话版) 咱们java对象被创建的过程大致如下,即: 在 JVM 中对象的创建,从⼀个 new 指令开始: 首先检查这个指令的参数是否能在常量池中定位到⼀个类的符号引用检查这个符号引用代表…

1. java对象创建流程(大白话版)

咱们java对象被创建的过程大致如下,即:

在 JVM 中对象的创建,从⼀个 new 指令开始:
  1. 首先检查这个指令的参数是否能在常量池中定位到⼀个类的符号引用
  2. 检查这个符号引用代表的类是否已被加载、解析和初始化过。如果没有,就先执行相应的类加载过程
  3. 类加载检查通过后,接下来虚拟机将为新生对象分配内存
  4. 内存分配完成之后,虚拟机将分配到的内存空间(但不包括对象头)都初始化为零值。
  5. 接下来设置对象头,请求头⾥包含了对象是哪个类的实例、如何才能找到类的元数据信息、对象的哈希码、对象的 GC 分代年龄等信息。

没听懂?没关系,咱们来看看下面这个例子:

想象你在秋招时一路过关斩将,现在终于准备入职了,这时候会有以下流程:

  1. 背景调查 → 检查类是否已加载(HR查你的学历)
  2. 分配工位 → 分配内存(给你分一个工位)
  3. 初始化设备 → 内存清零(工位电脑装好系统)
  4. 贴工牌 → 设置对象头(给你发工牌和权限)
  5. 入职培训 → 执行构造函数(教你公司规则)

    这个入职的流程就跟咱们java对象创建的过程差不多,下面咱们来分步骤一一详解。

    2. 分步骤详解

    Step 1:类加载检查

    new指令触发时,JVM会问:"这个类合法吗?"

    这时候会检查常量池中的符号引用,触发类加载机制加载 → 验证 → 准备 → 解析 → 初始化


    Step 2:分配内存

    • 方式1:指针碰撞(内存规整时)
    • 方式2:空闲列表(内存碎片化时)

    通过CAS + 失败重试保证线程安全,可能使用TLAB(线程私有分配缓冲区)

    就好像工位分配有两种策略:连续工区直接划一块(指针碰撞),或从碎片工位里拼凑(空闲列表)。

    指针碰撞:假设 Java 堆中内存是 绝对规整 的,所有被使用过的内存都被放在⼀边,空闲的内存被
    放在另⼀边,中间放着⼀个指针作为分界点的指针,那所分配内存就仅仅是把那个指针向空闲空
    间⽅向挪动⼀段与对象大小相等(这里假设是两块内存大小单位)的距离。

    空闲列表:如果 Java 堆中的内存并 不是规整的 ,已被使用的内存和空闲的内存相互交错在⼀起,
    那就没有办法简单地进行指针碰撞了,虚拟机这时候就必须维护⼀个列表,记录上哪些内存块是可用的, 在分配的时候从列表中找到⼀块足够大的空间划分给对象实例,并更新列表上的记录,这种分配方式称为“空闲列表”。

    Step 3:内存清零

    将分配的内存初始化为零值(int→0,boolean→false,引用→null),保证对象实例字段不赋初值也能直接使用。就好比给你的工位电脑格式化,装好干净的系统。


    Step 4:设置对象头

    对象头内容:

    • Mark Word:哈希码、GC分代年龄、锁状态等
    • 类型指针:指向类元数据的指针

    对象头占12字节(64位JVM开启压缩指针时),就好像给你工牌贴上姓名、工号、部门等信息。


    Step 5:执行构造函数

    执行<init>方法(显式初始化成员变量),从子类到父类递归调用构造函数

    HR带你熟悉公司,布置你的工位(这才是你看到的new Object()的最终效果)。

          步骤                   技术细节                 比喻
    类加载检查双亲委派机制,元数据验证入职前的背景调查
    分配内存CAS + TLAB避免并发冲突抢会议室避免冲突
    内存清零零值初始化(JVM层)工位电脑格式化
    对象头设置Mark Word + 类型指针工牌信息(姓名/部门)
    构造函数执行程序员可见的初始化(Java层)布置工位(放私人物品)

    3. 代码示例

    Object obj = new Object();

    JVM背后做的事:

    1. 检查Object类是否加载 → 没加载则加载类
    2. 分配内存(假设8字节)
    3. 内存清零 → 所有字段为0/null
    4. 设置对象头(MarkWord + 类型指针指向Object.class)
    5. 调用Object的构造函数(这里是个空方法)

    4. 高频面试问题

    (1)为什么先清零再执行构造函数?
    :保证对象创建时字段一定有初始值(避免脏数据)。

    (2)内存分配如何保证线程安全?
    : CAS + 失败重试 或 TLAB(线程本地分配缓冲)。

    (3)对象头和对象体是什么关系?
    :对象头是元数据(如锁、GC信息),对象体是实例数据。

    http://www.dtcms.com/wzjs/597459.html

    相关文章:

  6. 科技 杭州 网站建设对门户网站建设情况的报告
  7. 浅谈旅游网站的规划与建设十大办公室设计公司
  8. 大航母网站建设案例网络营销课程总结与心得体会
  9. 上海 网站备案拍照网站建设开发模式
  10. 西南大学校园网站建设往年考试卷网站项目需求说明书
  11. 怎么编辑自己的网站吉林seo快速排名
  12. 泰安网站建设方案网站用户建设的设计与实现
  13. 苏州前几天网站建设php网站开发 招聘
  14. 培训行业网站建设的重要性做网站需要招聘内容
  15. 企业每年向工商网站做申报网站微信开发
  16. 赣州人才网站wordpress运行库
  17. 做哪个网站好苏州制作网页服务
  18. 西安网站开发建设深圳网站建设公司招聘
  19. 网站的切图是谁来做卖货到海外的免费平台
  20. 网站开发薪资seo接单
  21. 哪些购物网站用php做的工商注册登记流程
  22. 怎么对网站标注做记号dw个人网页制作步骤
  23. 如何知道网站是否备案过自己做网站需要买什么
  24. 科技网站模板免费下载常平网站开发
  25. ghostwin8网站奖别人做wordpress 跳回80端口
  26. 湖南省军区强军网网站群建设项目博客系统 wordpress
  27. 2022最新国内新闻50条简短seo网络营销课程
  28. 网站制作最新技术的建设银行青海省分行门户网站
  29. 在电脑上做网站的软件一个网页的制作
  30. 怎么在视频网站做淘宝客网站建站管
  31. 网站开发建设专业的公司怎样备份wordpress
  32. 网站模块在线制作教程网页设计摘要
  33. 公司网站建设小江wordpress 微信登录插件下载
  34. 网站维护的内容有哪些婚纱摄影网站建设公司
  35. 哪个网站做浏览器主页好石家庄哪里有做网站