首页 > 编程语言 >Java对象创建过程,类的生命周期,Java的对象结构

Java对象创建过程,类的生命周期,Java的对象结构

时间:2023-09-08 21:01:21浏览次数:54  
标签:初始化 生命周期 Java 对象 线程 对齐 加载

一、Java对象创建过程

1、JVM遇到一条新建对象的指令时,首先去检查这个指令的参数是否能在常量池中定义到一个类的符号引用,然后加载这个类;

2、为对象分配内存。一种办法时“指针碰撞”,一种办法是“空闲列表”,最终常用的办法是“本地线程缓冲分配”;

3、将除对象头外的对象内存空间初始化为0;

4、对对象头进行必要设置。

二、类的生命周期

类的生命周期包括这几个部分,加载、连接、初始化、使用和卸载,其中前三步是类的加载过程。

1、加载:查找并加载类的二进制数据,在Java堆中也创建一个java.lang.Class类对象

2、连接:连接又包含验证、准备、初始化三个过程:

2.1验证:验证文件格式、元数据、字节码、符号引用验证;

2.2准备:为类的静态变量分配内存,并将其初始化为默认值;

2.3解析:把类中的符号引用转换为直接引用;

3、初始化:为类的静态变量赋予正确的初始值

4、使用:new对象在程序中使用

5、卸载:执行垃圾回收

三、Java的对象结构

Java对象结构由三部分组成:对象头、实例数据、对齐填充

1、对象头:由两部分组成,第一部分存储对象自身的运行时数据:哈希码、GC分代年龄、锁标识状态、线程持有的锁、偏向线程ID(一般占32/64 bit)。第二部分是指针类型,指向对象的类元数据类型(即对象代表哪个类)。如果是数组对象,则对象头中还有一部分用来记录数组长度。

2、实例数据:用来存储对象真正的有效信息。(包括父类继承下来的和自己定义的)

3、对齐填充:JVM要求对象起始地址必须是8字节的整数倍(8字节对齐)

标签:初始化,生命周期,Java,对象,线程,对齐,加载
From: https://blog.51cto.com/u_16244372/7412984

相关文章

  • Java学习002__案例1:两只老虎
    需求:动物园里有两只老虎,已知两只老虎的体重分别为180kg、200kg,请用程序实现判断两只老虎体重是否相同。1publicclassMain{2publicstaticvoidmain(String[]args){3intweight1=180;4intweight2=200;5//使用三目运算符实......
  • Java学习_001 常用DOS命令(仅做个人学习记录)
    一些简单的DOS命令:1.DIR显示指定路径上的所有文件或目录的信息格式:DIR[盘符:][路径][文件名][参数]参数:/w:宽屏显示/p:分页显示/a:显示具有特殊属性的文件/s:显示当前目录及其子目录下的所有文件2.CD进入指定目录 3.MD建立文件4.RD删除文件(这个只能删除文件夹且该......
  • JAVA日志技术 & Logback
    前言为什么需要记录日志?我们不可能实时的24小时对系统进行人工监控,那么如果程序出现异常错误时要如何排查呢?并且系统在运行时做了哪些事情我们又从何得知呢?这个时候日志这个概念就出现了,日志的出现对系统监控和异常分析起着至关重要的作用一、日志概括1.了解日志框架JAVA在早期的日......
  • 走进JavaScript基础语法
    点击链接走进前端学习:https://blog.csdn.net/qq_53810245/article/details/116831968@目录JavaScript1、概述2、基本语法入门2.1定义变量2.2浏览器控制台使用在这里插入图片描述2.3数据类型1.变量命名:以$或_开头标识2.number:3.字符串:'abc',''abc''4.布尔值:true,false5.逻......
  • 无涯教程-JavaScript - IMLN函数
    描述IMLN函数以x+yi或x+yj文本格式返回复数的自然对数。复数的自然对数为-$$\ln(x+yi)=\ln\sqrt{x^2+y^2}+i\tan^{-1}\left(\frac{y}{x}\right)$$语法IMLN(inumber)争论Argument描述Required/OptionalInumberAcomplexnumberforwhichy......
  • 所以说,java的“方法”有点儿类似于C++的"函数"吧
    两个语言的区别就是,C++如果函数写在下面的话,要在上面注释:而java的方法若写在下面的话,要加static,然后不管怎样,前面一定要加public......
  • java 支持 超大上G,多附件上传技术
    ​ 之前仿造uploadify写了一个HTML5版的文件上传插件,没看过的朋友可以点此先看一下~得到了不少朋友的好评,我自己也用在了项目中,不论是用户头像上传,还是各种媒体文件的上传,以及各种个性的业务需求,都能得到满足。小小开心了一把。  但无论插件再怎么灵活,也难以应付所有的需求,比......
  • Java泛型对象在http请求和响应对象中的封装
    Java泛型对象在http请求和响应对象中的封装publicclassMySystemBaseResVo<T>{//注意:类的后面需要带上<T>,否则数据无法封装privateStringerr_no;privateStringerr_tips;privateTdata;publicStringgetErr_no(){returnerr_no;}......
  • 无涯教程-JavaScript - IMEXP函数
    描述IMEXP函数以x+yi或x+yj文本格式返回复数的指数。复数的指数为-$$e^{((x+yi)}=e^xe^{yi}=e^x(\cosy+i\siny)$$语法IMEXP(inumber)争论Argument描述Required/OptionalInumberAcomplexnumberforwhichyouwanttheexponential.Requir......
  • JAVASE 第三天
    JAVASE基本的Dos命令#盘符切换 D:#查看当前目录下的所有文件dir#切换目录(/d换盘符写在cd后)cd文件夹#返回上一级cd..#清理屏幕cls#打开应用calc计算机,notepad记事本,mspaint画图#ping命令可以获得IP地址延迟一般用来测试网络,是否正常pingwww.baidu.com......