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

JVM中对象创建过程

在JVM中对象的创建,我们从一个new指令开始:

这个过程大概图示如下:

虚拟机收到new指令触发。

类加载检查:如果类没有被类加载器加载,则执行类加载流程(将class信息加载到JVM的运行时数据区的过程),对象所需内存大小在类加载完后可以完全确定。

对象分配内存:从堆中划分出一块确定大小的内存。

内存空间初始化:内存分配完后,虚拟机需要将分配到的内存空间初始化为零值(如:int值为0,boolean值为false等),保证了对象的实例字段在Java代码中可以直接使用。

为对象进行必要的设置:虚拟机为对象进行设置,如设置对象属于哪个类的实例、如何找到类的元数据信息、对象的哈希码、对象的GC分代年龄等信息,这些信息存放在对象头中。

从虚拟机的角度来看,一个新的对象已经创建完毕。但从Java程序的角度来看,对象创建才刚开始,所有的字段还是零值,所以需要程序员进行初始化操作,这样一个真正可用的对象才算完全产生出来。

init是对对象级别的变量或非静态代码块进行初始化的

clinit静态变量或者静态代码块谁来初始化呢


http://www.kler.cn/a/273663.html

相关文章:

  • EasyCVR视频汇聚平台如何配置webrtc播放地址?
  • 12. C语言 数组与指针(深入理解)
  • 获取地图文档中的图层列表
  • Vue2:el-table中的文字根据内容改变颜色
  • 在Java中实现集合排序
  • 手机的ip地址是根据电话卡归属地定吗
  • Java微服务轻松部署服务器
  • [LLM]大语言模型文本生成—解码策略(Top-k Top-p Temperature)
  • C# Winform实现数据双向绑定
  • 大模型-Prompt
  • 【07】进阶html5
  • C语言黑魔法第三弹——动态内存管理
  • k8s client-java创建pod常见问题
  • CentOS 7 编译安装 Nginx
  • spring-boot-starter-thymeleaf加载外部html文件
  • 什么是通用人工智能(AGI)?
  • Vim替换时区分大小写
  • 解决爬虫特殊解码的问题
  • 二叉树遍历(牛客网)
  • Apache Doris 2.1 核心特性 Variant 数据类型技术深度解析
  • 王老吉药业开拓数字经济“新蓝海”,成立数字经济研究所,科技赋能新品压片糖
  • 华为机试题-最小矩阵
  • RPM与DNF的操作实践
  • Dubbo是什么?请简要描述其主要功能。Dubbo的架构是怎样的?请解释其核心组件及其作用。
  • 微服务篇-C 深入理解第一代微服务(SpringCloud)_IV 深入理解Hystrix断路器
  • 华为OD机试真题实战应用【赛题代码篇】-素数伴侣(附Java、C++和python代码实现)