构造器是静态方法。

1. Java中,用new()创建一个对象的时候,Java虚拟机首先去检查new指令的参数是否能够在方法区的常量池中定位到这个类的符号引用,并且检查这个符号引用代表的类是否被加载、解析和初始化过。如果没有,则必须执行相应的类加载过程。

2. 类加载过程为:Java解释器查找类路径,以定位.class文件。然后载入.class,有关静态初始化的所有动作都会执行。因此,静态初始化只在Class对象首次加载的时候进行一次。

3. 在类加载检查通过后,虚拟机将为新生对象分配内存。对象所需内存的大小在类加载完成后便可完全确定。为新生对象分配内存即为在Java堆中划分出一块确定大小的内存。

4. 内存分配完成后,虚拟机需要将分配到的内存空间都初始化为零值。如果使用TLAB(Thread Local Allocation Buffer, 本地线程分配缓冲),这一工作过程也可以提前到TLAB分配时进行。初始化为零值保证了对象的实例字段在Java代码中可以不赋初始值就可以直接使用,程序访问到这些字段的数据类型所对应的零值,引用被设置为null,基本数据类型被设置为0。

5. 接下来,虚拟机对对象进行必要的设置,例如这个对象是哪个类的实例、如何才能找到类的元数据信息、对象的哈希码、对象的GC分代年龄等信息,这些信息保存在对象的对象头中。

6. 执行所有出现在字段定义处的初始化操作。

7. 执行构造器。

对象创建的过程 java_Java 对象创建过程相关推荐

  1. java创建变量的过程_java 对象的创建过程

    初始化的顺序首先是static(如果它们尚未由前一次对象创建初始化,也就是new对象的时候,只执行一次static变量初始化),变量初始化顺序有变量在类的定义顺序决定的: 对象的创建过程,以Dog类为 ...

  2. Java 虚拟机学习笔记 | 类加载过程和对象的创建流程

    前言 创建对象是 Java 语言绕不开的话题,那么对象是如何创建出来的呢?我们今天就来聊一聊.对象创建第一步就是检查类是否加载,而类的加载又牵扯到类的加载过程.如果单说对象的创建而绕开类的加载过程,感 ...

  3. string s=new string() 创建了几个对象_Java的String类5个常见面试题的解答过程和原理...

    这篇来看看关于Java String类的5道面试题,这五道题,我自己在面试过程中亲身经历过几道题目,学完了这篇,我才焕然大悟,才知道为什么是这个答案,本篇就带你了解这些题的答案为什么是这样. 1.判定 ...

  4. Java对象创建的过程及对象的内存布局与访问定位

    这里以HotSpot为例,且所说的对象指普通的Java对象,不包括数组和Class对象等. 1.对象创建的过程 1.类加载.解析.初始化:虚拟机遇到new时先检查此指令的参数是否能在常量池中找到类的符 ...

  5. JVM知识体系学习四:排序规范(happens-before原则)、对象创建过程、对象的内存中存储布局、对象的大小、对象头内容、对象如何定位、对象如何分配

    文章目录 前言 零.排序规范 1.happens-before原则 2.找文档位置 一.一线互联网企业关于对象面试题: (后面回答的就是这几个问题) 二.对象创建过程 三.对象在内存中的存储布局 1. ...

  6. oracle无创建directory权限,【DIRECTORY】普通用户创建Oracle DIRECTORY数据库对象的权限需求及探索...

    可能遇到的报错信息如若在创建DIRECTORY之前普通用户sec未获得相应权限,将会收到最为常见的"ORA-01031: insufficient privileges"错误.模拟 ...

  7. 捅破窗户纸:如何从过程到对象—For金色的海洋以及所有为面向对象而困惑的Tx...

    本来不想写这篇很挨打的Post,不过在最近几天的最热的几篇Post里面看到无数的Tx为了面向对象的争论,感触颇多,遂作此篇. 鄙视OO的也进来鄙视我吧.望OO达人多多指正. 前头有一篇关于对象持久化的 ...

  8. java对象怎么创建_Java对象是怎么创建的(通过对象的创建,了解JVM内存结构)...

    在代码层面,我们通过new关键字创建一个对象: Object obj=new Object(); 而虚拟机中,创建一个对象,则经过了许多环节,JVM的内存结构可以通过另一篇文章了解:一个"H ...

  9. 把对象的创建交给spring来管理——  1.创建bean的三种方式     2.bean对象的作用范围     3.bean对象的生命周期

    把对象的创建交给spring来管理 spring对bean的管理细节     1.创建bean的三种方式     2.bean对象的作用范围     3.bean对象的生命周期 创建Bean的三种方式 ...

最新文章

  1. 重磅消息:蚂蚁金服推出RPC框架
  2. 6月28日 cf总结
  3. 潜移默化学会WPF(绚丽篇)--热烈欢迎RadioButton,改造成功,改造成ImageButton,新版导航 - AYUI框架 - 博客园...
  4. top统计mysql性能_mytop安装,使用mytop监控MySQL性能
  5. 后悔贪心+P2949 [USACO09OPEN]Work Scheduling G
  6. 小学计算机制作表格教案,小学信息技术《表格的制作》教案
  7. android第一天-------环境搭建
  8. springboot导入项目依赖报错_最详细的 Spring Boot 多模块开发与排坑指南
  9. 优酷视频怎么提交意见反馈
  10. php 路由实现_PHP操作路由器实现方法示例
  11. 在JS/jQuery中,怎么触发input的keypress/keydown/keyup事件?
  12. Java基础学习总结(161)——Java 重试机制
  13. 微信小程序开发学习笔记001--认识微信小程序,第一个微信小程序
  14. 再探java基础——对面向对象的理解(1)
  15. html 页面跳转 加载效果,好看的html页面加载源码带跳转
  16. Ubuntu18.04安装TIM、微信
  17. i.MX6 交叉编译zlib、yasm、xvidcore、libpng、x264、jpegsrc、ffmpeg
  18. 硬盘 : ATA、ATAPI的含义
  19. 路由器和带宽猫、AP、AC、交换机
  20. OSChina 周二乱弹 ——人在职场飘,哪能不跳槽

热门文章

  1. 【笔试/面试】—— 从大数相减到大数求除(大数求余)
  2. _Linux学习手册(二)—文件目录类命令
  3. 小白用python处理excel文件-Python读、写Excel文件(三种模块三种方式,小白也可学会)...
  4. python基础语法手册-python语法手册
  5. python工资这么高为什么不学-人人学Python,为什么就业拿高薪的那么少?
  6. python入门经典-终于明白经典python入门教程
  7. python是什么意思怎么读-python怎么读,python是什么意思
  8. 语音识别如何操作?这种语音转文字方法也太好用了吧,简单高效
  9. VueRouter(记录)
  10. python中装饰器的作用_Python中装饰器的用法