美文网首页工作生活
对象是怎么被创建的

对象是怎么被创建的

作者: fulj | 来源:发表于2019-07-03 08:35 被阅读0次

第一步 new指令

是否能在常量池里定位到这个类的符号引用,并检查是否被加载,解析,初始化。如果没有必须先加载

第二步 分配内存

不同的垃圾收集器使用不同方式分配内存

  • 指针碰撞:对于规整的Java堆内存,对于带有Compact过程的收集器
  • 空闲链表:基于Mark-Swap算法的收集器,类似CMS

分配方式

  • 采用CAS算法
  • 采用TLAB 预先给线程分配一块堆空间,那么只有分配的时候需要同步锁定,提升性能

第三步 虚拟机初始化对象

  • 这一步将分配到的内存初始化为零值(不包括对象头),如果使用TLAB,这一工作也可以提前至TLAB分配时进行。
  • 设置对象头的类型指针、对象hash码、GC分代年龄、是否偏向锁等

第四步 程序员赋值

也就是执行代码中的构造方法<init>

相关文章

  • 对象是怎么被创建的

    第一步 new指令 是否能在常量池里定位到这个类的符号引用,并检查是否被加载,解析,初始化。如果没有必须先加载 第...

  • IOS 对象的创建

    OC 中创建对象是基础的操作,但我们是否有了解过OC对象是怎么创建的,这篇文章就是从最基础的对象创建起,看一下OC...

  • 4 不可变对象

    当满足以下条件对象是不可变的 当对象状态创建后就不能被修改 对象的所有域都是final类型 对象是正常创建的(对象...

  • Spring Bean 创建过程(Bean 创建生命周期)

    利用构造方法创建对象 Spring 判断对象是否被 @Autowired @Component @Service ...

  • 3 Hello Spring

    思考问题 对象由谁创建?hello 对象是由spring 创建的 Hello 对象的属性是怎么设置的hello对象...

  • JSP 中的 response 内置对象

    response 对象是由 Tomcat 创建的,代表服务器对客户端的响应。它的继承体系和 request 对象是...

  • String 优化

    String 对象是如何创建的 JDK6以及之前的版本中,String对象是对char数组进行了封装实现的对象,主...

  • DOM对象是什么时候被创建的

    我本来想想练习一个小范例: 页面上写一个文本输入框和一个按钮,点击按钮让文本框禁用,不可再输入。 思路是这样: 先...

  • Java中对象的访问定位

    我们前面有说过一个对象是如何创建的,那么创建之后具体怎么使用呢? Java程序会通过栈上的reference数据来...

  • Java中对象的创建、内存分配和销毁

    一、对象的创建 创建对象是通过new关键字来实现,对于JVM来说new关键字背后还有很多细节。当创建一个对...

网友评论

    本文标题:对象是怎么被创建的

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