Java对象创建过程

1.new

2.类加载检测

虚拟机遇到new指令时,首先进行类加载检测:

(1)检测new指令的参数是否能在常量池中定位类的符号引用

(2)检测这个符号引用是否进行过类的加载解析和初始化,没有则先对该类进行加载。

3.对象内存分配

创建一个对象所需要的内存在类加载完成时就能够确定,内存分配是指在堆中划分出一块和对象大小的对应内存出来。

4.值初始化

jvm会初始化分配好的内存,将其设置为0值

5.设置对象头

(1)markword 标记信息:存储对象自身运行时的数据:如hascode、gc年龄分代、锁标志、锁信息等;

(2)klassword 类型指针:指向它对应的类元数据,VM用这个确定属于哪个类等实例;

6.执行

类的构造函数,对属性进行赋值。

Original: https://www.cnblogs.com/mzBlogs/p/16394055.html
Author: 重生之我是java程序员
Title: Java对象创建过程

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/607884/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • .NET 中使用类似于 Java Math.nextUp

    一.前言 最近在做的工作需要 .NET 和 Java 功能对齐,在 Java 方面使用了一个科学 API: Math.nextUp,在 .NET 中并没有同名的方法。 二.解决 具…

    Java 2023年5月29日
    076
  • 基于数据库的代码自动生成工具,生成JavaBean、生成数据库文档、生成前后端代码等(v5.8.8版)

    TableGo v5.8.8版震撼发布,此次版本更新如下:1、新增两个扩展字段,用于生成自定义模板时使用。2、自定义模板新增模板目录,可以选择不同分类目录下的模板。3、自定义模板生…

    Java 2023年6月9日
    0101
  • ExceptionHandler配合RestControllerAdvice全局处理异常

    Java全局处理异常 引言 对于controller中的代码,为了保证其稳定性,我们总会对每一个controller中的代码进行try-catch,但是由于接口太多,try-cat…

    Java 2023年6月8日
    084
  • 哈希表实现——链表形式——人员管理系统

    哈希表实现——链表形式——人员管理系统 一.简介 Java写的,一边学一边敲,比较简陋,当做个纪念。 二.代码 package com.appletree24.hashtable;…

    Java 2023年6月7日
    075
  • 【Java面试手册-基础篇】Java中的main()方法能否被覆盖重写?

    答案是否定的,因为main方法是静态方法,静态方法是一个类方法,在使用的时候不需要实例化,是直接使用类名来调用方法的,而在Java中静态方法在编译时会结合在一起,所以不能覆盖静态方…

    Java 2023年6月8日
    083
  • Java面向对象

    Java的核心思想就是OOP 面向过程 & 面向对象 面向过程思想 步骤清晰简单,第一步做什么,第二步做什么… 面对过程适合处理一些较为简单的问题* 面向对象思…

    Java 2023年6月5日
    070
  • Java8新特性学习

    具体内容: Java新特性讲解 笔记(其他小伙伴做的笔记,挺好的): 百度网盘链接: https://pan.baidu.com/s/16tiel9pu_4O5M1oAL5-cqA…

    Java 2023年5月29日
    084
  • Spring(一):简介

    一、什么是Spring 广义上的 Spring 泛指以 Spring Framework 为核心的 Spring 技术栈。 经过十多年的发展,Spring 已经不再是一个单纯的应用…

    Java 2023年6月15日
    065
  • Spring Boot:整合Spring Data JPA

    综合概述 JPA是Java Persistence API的简称,是一套Sun官方提出的Java持久化规范。其设计目标主要是为了简化现有的持久化开发工作和整合ORM技术,它为Jav…

    Java 2023年5月30日
    083
  • 爽翻天!告别Java。一起来使用kotlin开发完整客户端

    必须写在前面:从Java转向Kotlin,只需要几天时间! 本篇是kotlin开发Android系列教程的最后一篇。前面几篇介绍了kotlin的基本语法、与java的不同之处等。在…

    Java 2023年5月29日
    0102
  • Mybatis 插入数据后,自动返回其主键值

    Vo实体类: controller 层: service 层: serviceImpl 层: mapper 层: mapper.xml 文件: 插入数据的主键值其实是赋值给你指定的…

    Java 2023年6月9日
    072
  • 方法是什么

    什么是方法? System.out.println(),这是方法,输出语句的方法 这句语句就是调用系统System类中的标准输出对象out中的println()方法。 (类+对象+…

    Java 2023年6月9日
    0116
  • Redis概述及基本数据结构

    Redis 是一个基于内存的键值型 NoSQL 数据库 特征: 键值型:value 支持多种不同数据类型,功能丰富 单线程:每个命令具备原子性 延迟低、速度快: 基于内存、IO多路…

    Java 2023年6月9日
    077
  • AVL树到底是什么?

    一. 什么是AVL树 在认识AVL树之前我们先认识一下什么是二叉搜索树: 1.二叉搜索树 二叉搜索树又称为二叉排序树,二叉搜索树满足所有的左孩子节点都小于其根节点的值,所有的右孩子…

    Java 2023年5月29日
    078
  • 66.落空

    dfsd posted @2022-09-28 08:39 随遇而安== 阅读(8 ) 评论() 编辑 Original: https://www.cnblogs.com/55zj…

    Java 2023年6月7日
    081
  • Java开发学习(十二)—-基于注解开发依赖注入

    Spring为了使用注解简化开发,并没有提供 构造函数注&#x…

    Java 2023年5月29日
    076
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球