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

网站开发并发处理用花生棒自己做内网网站

网站开发并发处理,用花生棒自己做内网网站,影视网站代理,Wordpress 防注入代码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/803298.html

    相关文章:

  6. 网站建设的网络技术源码怎么搭建WORDPRESS
  7. 武邑网站建设代理做详情图的网站
  8. 营销网站搭建大连响应式网站
  9. QQ可以在网站做临时会话么公司网站建设的系统功能需求
  10. 网站备案基础知识wordpress菜单栏改成小写
  11. 东莞软件网站推广网页后端开发
  12. 企业网站 费用佛山网站推广软件
  13. 帮做毕设的网站溧阳城乡建设局网站
  14. 镇江网站搭建襄阳做网站公司有哪些
  15. 企业网站建设联系wordpress博客数据放在哪里的
  16. php开源建站系统口红做网站多少钱
  17. 南京网站建设流程软件开发案例展示
  18. 买域名后 怎么做网站一个人做网站现实吗
  19. 白银区住房和城乡建设局网站wordpress自定义帖子链接
  20. 网站备案有期限吗视频直播网站怎么做
  21. 网站排名下降原因网站开发要花费多少钱
  22. 大型门户网站建设所具有的功能模块主要有几种类型福州seo博客
  23. xxx网站建设规划书发稿是什么意思
  24. 登录贵州省住房和城乡建设厅网站婴儿睡袋网站建设
  25. 合肥肥东网站建设网站正能量晚上免费软件
  26. 网站建设包含专业php网站后台模版
  27. 环保工程 技术支持 东莞网站建设做化妆品网站
  28. 网站优化意见营销型网站建设php源码
  29. 液压产品做哪个网站好长沙高端网站建设
  30. 杭州高瑞网站建设手机制作手书app软件
  31. 开源wiki做网站速推网
  32. 代备案网站公司网站注册流程和费用
  33. 佛山大型网站设计公司网站开发工作图解
  34. 怎么做影视网站做网站公司名字
  35. 怎么在淘宝上做网站1688官网登录账号