【JVM】类的生命周期

目录

类的生命周期

加载阶段

连接阶段

初始化阶段

类的使用阶段

类的加载阶段


类的生命周期

加载阶段

在加载阶段,类加载器首先会通过一个类的全限定名来获取定义此类的二进制字节流。这个步骤主要是将整个Class 文件解析成二进制流。

全限定名是指一个 java 类的完全限定名,例如,对于类  java.lang.String , 其限定名就是

java.lang.String , 全限定名 是在整个 JVM 中绝对名称,可以表示 Class 文件结构的类或接口

的名称

然后,将这个字节流所代表的静态存储结构转化为方法区的运行时数据区,即将字节流的数据存入运行时数据区

最后,在java堆中生成一个代表这个类的 java.lang.Class 对象,作为方法区中这些数据的访问接口。

连接阶段

类的连接阶段是类加载过程的第二个阶段,包括 验证,准备,和解析三个阶段。

1. 验证阶段

验证阶段用于检验被加载的类是否正确的内部结构,并和其他类协调一致。

2. 准备阶段

类准备阶段负责类的静态属性分配内存,并设置默认初始值。

3.解析阶段

将类的二进制数据中的符号引用替换成直接引用

初始化阶段

类的初始化阶段是类的加载过程的最后一个阶段,在这个阶段,JVM 会执行类初始化方法()。该方法由java编译器生成,并由 JVM 调用,程序开发者无法定义同名方法,也无法直接在java程序中调用该方法。该方法包含类静态成员的赋值语句以及 static 语句块合并产生。

类的使用阶段

在类的使用阶段,对象被创建并被赋予特定的初始状态和行为。具体来说,使用阶段的开始标志是JVM 执行到 new 关键字或者使用双冒号(::)进行类的反射调用。在对象的初始化过程中,如果有多个初始化块,那么这些初始化块会按照在源代码中出现的顺序执行。在类的使用阶段,对象可以调用其方法,并使用其属性。

类的卸载阶段

当一个类不再被使用时,他会被卸载,释放其所占用的空间。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/627793.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

海外代理IP怎么用?常见使用问题及解决方案

海外代理IP是指提供全球范围内的代理服务器,代理服务器充当IP与目标网站之间的中介,可以起到安全匿名、提高网速、突破网络壁垒的作用。在使用代理IP的过程中,用户可能会遇到各种挑战,如连接问题、速度慢等。理解这些问题的原因并…

HCIP第一次练习 -- RIP复习实验

要求: 需求:R1-R2-R3-R4-R5运行RIPV2 R6-R7运行RIPV1 1.使用合理地址规划网络,各自创建环回接口 2.R1创建环回172.16.1.1/24172.16.2.1/24 172.16.3.1/24 3.要求R3使用R2访问R1环回 4.减少路由条自数量,增加路由传递安全性 5.R5创建一个环回模拟运营商,不…

申泰勇教练的独家人物化身系列即将登陆 The Sandbox

申泰勇(Shin Tae-yong)教练是足球界的传奇人物,他来到 The Sandbox,推出了自己的专属人物化身系列。作为前 K 联赛中场球员和印尼队取得历史性成就的幕后教练,他的传奇经历现在已经影响到了虚拟世界。 向过去、现在和未…

在Dynamics 365中通过代码为用户添加角色

作为一个Dynamics 365开发者,你可能会遇到这样的需求:通过代码为用户分配角色。这个任务的实现方式可能并不明显,因为你不能直接创建systemuserroles实体。但别担心,我将在这篇文章中解释如何做到这一点。 首先,我们需…

基于ArcGIS的晕线制作

在借助ArcGIS进行制图时,我们有时需要为矢量边界添加晕线,今天就来探索一下基于ArcGIS的晕线制作操作。 软件版本:ArcMap10.4.1 方法一:制作多环缓冲区 工具路径:Analysis Tools-Proximity-Mutiple Ring Buffer 思…

Python 基础(七):与时间相关的模块

目录 1 time 模块1.1 struct_time 类1.2 常用函数 1 time 模块 time 模块提供了很多与时间相关的类和函数,下面我们介绍一些常用的。 1.1 struct_time 类 time 模块的 struct_time 类代表一个时间对象,可以通过索引和属性名访问值。对应关系如下所示&…

前后端跨域问题

告别烦恼,彻底解决跨域问题的终极指南-chrome的安全进阶之路_chrom 强制跨域-CSDN博客

融优学堂-艺术史

导论4 1.【单选题】根据导论的讲解,下列表述正确的是()。(1)艺术品是因人的活动而被创造出来的人工制品。(2)许多物品被制造出来时,最初的目的是满足某种实用的用途,而不…

在linux安装LAStools

LAStools下载: https://github.com/LAStools/LAStools/releases 编译安装: # 设置安装路径 cmake -DCMAKE_INSTALL_PREFIX/home/vis/work/SourceCode/LAStools-2.0.2/build cmake . cmake --build . make install编译后的库:

【昕宝爸爸小模块】深入浅出之JDK21 中的虚拟线程到底是怎么回事(二)

➡️博客首页 https://blog.csdn.net/Java_Yangxiaoyuan 欢迎优秀的你👍点赞、🗂️收藏、加❤️关注哦。 本文章CSDN首发,欢迎转载,要注明出处哦! 先感谢优秀的你能认真的看完本文&…

node版本过高与node-sass不兼容问题

第一步:安装yarn 安装cnpm 第二步:yarn install 这一步可能会出现node版本过高报错 yarn config set ignore-engines true 执行 自动补充兼容命令 然后重新yarn install 出现报错: 第三步:使用cnpm 单独安装 cnpm install node-…

Acrel-1000安科瑞变电站综合自动化系统选型与应用

摘 要:变电站综合自动化系统是将变电站内的二次设备经过功能的组合和优化设计,利用先进的计算机技术、通信技术、信号处理技术,实现对全变电站的主要设备和输、配电线路的自动监视、测量、控制、保护、并与上级调度通信的综合性自动化功能。为…

【Docker】网络配置的三种方式

🎉🎉欢迎来到我的CSDN主页!🎉🎉 🏅我是Java方文山,一个在CSDN分享笔记的博主。📚📚 🌟推荐给大家我的专栏《Docker实战》。🎯🎯 &…

烧钱地推的反思

烧钱地推是一种独特的互联网企业的市场竞争手段。 1.地推的成本分析 最开始比较低等的地推方式是,为了获得一手的活动客户流,最开始的方式主要有扫码关注、注册或是转发送一些廉价的赠品,如气球、杯子、毛绒玩具、廉价多肉等等。 除此之外…

【C++】- 类和对象(运算符重载!!const!!详解!!)

类和对象③ 介绍运算符重载赋值运算符重载运算符重载const 在学习C语言时,我们首先接触的就是变量,再深入学习,我们可以利用运算符对变量进行操作,当我们使用C编写程序时,经常会遇到一些需要对特殊的例如自定义数据类型…

WEB 3D技术 three.js 3D贺卡(2) 加入天空与水面效果

上文 WEB 3D技术 three.js 3D贺卡(1) 搭建基本项目环境 我们简单搭了一个贺卡雏形 然后 我们要引入一个hdr的一个天空的效果 所以 我们需要在代码中导入 RGBELoader //导入 RGBELoader hdr工具 import { RGBELoader } from "three/examples/jsm/loaders/RGBELoader"…

文件加密怎么设置?文件工具哪个好用?

在使用电脑时,我们可以通过加密来保护电脑中的重要文件,那么,文件加密要怎么设置呢?下面我们就来了解一下。 文件夹加密超级大师 作为“加密大师”,文件夹加密超级大师支持文件加密功能,并提供了金钻加密和…

使用 Picocli 开发 Java 命令行,5 分钟上手

大家好,我是鱼皮,对不会前端的同学来说,开发 命令行工具 是一种不错的展示系统功能的方式。在 Java 中开发命令行工具也很简单,使用框架,几分钟就能学会啦~ Picocli 入门 Picocli 是 Java 中个人认为功能最完善、最简单…

[ PyQt入门教程 ] Qt Designer工具的使用

Qt Designer是PyQt程序UI界面的实现工具,使用Qt Designer可以拖拽、点击完成GUI界面设计,并且设计完成的.ui程序可以转换成.py文件供python程序调用。本文主要通过用户登录需求描述Qt Designer工具开发界面的使用方法。 主要内容 1、Qt Designer程序主界…