美文网首页
对象创建概览-上帝猿视角

对象创建概览-上帝猿视角

作者: 极客123 | 来源:发表于2018-10-26 17:16 被阅读0次

语言层面上,创建对象通畅仅仅是一个new搞定,在虚拟机中,过程是如何的?(不包括数组和Class对象)


虚拟机遇到一个new指令时

  • 1,检查这个指令的参数是否能在常量池中定位到一个列的符号引用
  • 2,检查这个符号引用代表的类是否已经被加载解析、和初始化过?
  • 3,如果没有,则必须先执行相应的类的加载过程
  • 4,类加载检查
  • 5,虚拟机为新生对象分配内存,该内存在类加载完成后便完全确定的
    分配内存: 指针碰撞、空闲列表
 - 划分内存,并发情况下的线程安全问题:
        1. 虚拟机采用CAS配上失败重试,保证更新操作的完整性
        2. 把内存分配的动作按照线程划分在不同的空间中进行:TLAB
              虚拟机是否使用TLAB : 通过设置=XX:+/ -UseTLAB  设定 

内存分配好之后,虚拟机将分配的内存全部初始化为零值(不包括对象头)如果使用TLAB,这个工作过程提前到TLAB分配时进行,保证对象在不赋初始值的时候就有一个默认值,程序可以访问这些数据类型对应的零值


  • 6 接下来对对象进行必要的设置,对象所属的类,元数据信息地址,对象的哈希码,GC分代年龄等,这些信息存放在对象头中,虚拟机的状态会影响对象头的内容。

从jvm角度看:至此,对象创建完成
从java程序角度看,对象创建才刚刚开始,对象的数据都是零值,接着执行<init> 方法,按照上帝猿的意愿进行初始化,这个时候对象才真正创建完成。

相关文章

  • 对象创建概览-上帝猿视角

    语言层面上,创建对象通畅仅仅是一个new搞定,在虚拟机中,过程是如何的?(不包括数组和Class对象) 虚拟机遇到...

  • C++设计模式(2)

    本文概览: 对象创建模式 Factory Method Abstract Factory Prototype Bu...

  • Copy和MutableCopy

    一、从面向对象到Objective-C概览copy 面向对象: 在面向对象的程序设计中,对象的copy就是创建一个...

  • JVM视角看对象创建

    从jvm处理对象的流程来看,大概分成三步骤:1.如何创建。2.什么是最佳存储模型。3.如何访问。本文将按照这三个流...

  • MyBatis 工作原理

    概览 我把MyBatis的工作原理分为以下几个方面或方面: 一.创建SqlSessionFactory对象 我Go...

  • 个人与上帝

    一个会思考的人,总能清晰地区分两个视角,个人视角和上帝视角。个人视角看微观,上帝视角看全局。个人视角分对错,上帝视...

  • 上帝的视角即是众人的视角

    人们把 360°视角喻为上帝的视角。而在怀特海看来,上帝的视角即是众人的视角,上帝的叙事亦即众人的叙事;众人的叙事...

  • 如何成为拥有上帝视角的大佬

    要想成为拥有上帝视角的大佬,首先得了解一下上帝视角这个概念。 01 那么什么是上帝视角...

  • VR开发--初步了解SteamVR

    1、360°旋转视角 添加其余的视角-扩张 添加好的层级关系:位置-头部-眼睛-耳朵 2、集成手柄 创建游戏对象,...

  • 不是枪杀人

    何为上帝视角,上帝视角又称万能视角,指人们在了解完一件事情后最终得出答案的视角,而今天,我用上帝视角望向了甘肃。 ...

网友评论

      本文标题:对象创建概览-上帝猿视角

      本文链接:https://www.haomeiwen.com/subject/gglltqtx.html