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

做亚马逊网站的账务处理杭州做网站的公司排行

做亚马逊网站的账务处理,杭州做网站的公司排行,wordpress get_user_by(),甘肃建设职工教育培训中心网站Java中类的加载阶段 类加载 Java中的类加载机制是Java运行时环境的一部分,确保Java类可以被JVM(Java虚拟机)正确地加载和执行。类加载机制主要分为以下几个阶段: 加载(Loading):这个阶段&#x…

Java中类的加载阶段

类加载

Java中的类加载机制是Java运行时环境的一部分,确保Java类可以被JVM(Java虚拟机)正确地加载和执行。类加载机制主要分为以下几个阶段:

  1. 加载(Loading):这个阶段,JVM会通过类加载器(ClassLoader)读取类的二进制数据(.class文件),并将其转换为方法区中的运行时数据结构。这个过程涉及到类的名称查找和字节码的加载。

  2. 验证(Verification):在链接阶段的第一步,JVM会确保加载的类符合JVM规范,没有安全问题。这个过程会检查字节码的格式是否正确,确保类的结构符合规范,比如确保所有方法调用都是有效的,没有非法访问等。

  3. 准备(Preparation):这个阶段,JVM会为类的静态变量分配内存,并设置默认初始值。比如,对于静态变量int x = 10;,JVM会在准备阶段为x分配内存,并将其初始化为0(因为10是一个编译时常量,所以最终的值会在初始化阶段被设置)

  4. 解析(Resolution):这个阶段涉及到将类、接口、字段和方法的符号引用转换为直接引用。符号引用是类文件中的一个名字,而直接引用是指向内存中的地址。解析过程确保了所有的符号引用都可以被正确地解析到它们所引用的实际对象。

  5. 初始化(Initialization):最后,JVM会执行类的构造器<clinit>()方法,这会按照代码中的顺序来初始化静态变量和静态初始化块。在这个阶段,静态变量会被赋予它们在代码中指定的值。

        整个类加载过程是由类加载器负责的,类加载器是Java运行时环境的一部分,负责加载.class文件,并确保类可以被JVM执行。类加载器还负责处理类之间的依赖关系,确保在加载一个类之前,它所依赖的类已经被加载。

Java类加载实例

public class App {public static void main(String[] args) {SpringApplication springApplication = new SpringApplication();}|

加载

        上述代码我简单改了下springboot的启动类,当我们运行main方法之间,类加载器会将App.class文件加载到JVM中,当运行main方法执行第一段代码的时候,就会将SpringApplication.class文件加载到JVM中,简单流程如下图。

好了,介绍完加载阶段我们思考一个小问题;如果我们随随便便给一个文件改个后缀名未.class文件那JVM还会处理吗?因此进入下一个阶段:

验证阶段

        上个阶段的问题答案肯定是否定的嘛?Java虚拟机会对class文件进行的规范约束,只有符合规范的文件才会被JVM处理。

通过验证以后的class文件才会进行处理,于是进入下一个阶段:

准备阶段

上述代码我们只有一个方法,实际很多类会有一些类变量,比如我们将上述代码改成:

public class App {public static int starter;public static void main(String[] args) {SpringApplication springApplication = new SpringApplication();}|

上述代码,假设我们是正常编码确认App.class是规范的即通过了验证阶段,便会进入准备工作。

这个阶段其实就是给这个“App”类分配一定内存空间给他的类变量分配内存并设置类变量的默认初始值如上述starter经过准备阶段会给一个’0‘的初始值,

类变量使用的内存都在方法区中分配。(这里提到初始化的是类变量,即static字段修饰,实例变量会在对象实例化时随对象一起分配在Java堆中。)

整个过程如下图:

解析阶段

这个阶段最最最主要的操作就是将符号引用替换为直接引用(类或接口、字段、类方法、接口方法、方法类型、方法句柄和访问控制修饰符7类符号引用),其实这部分实际都是由JVM底层处理的,涉及到c的处理过程。先不讨论,后面会抽一个专门说java与c的交互。

整个阶段就变成如下图:

符号引用与直接引用

        符号引用(Symbolic Reference) 是一种用来表示引用目标的符号名称,比如类名、字段名、方法名等。符号引用与实际的内存地址无关,只是一个标识符,用于描述被引用的目标,类似于变量名。符号引用是在编译期间产生的,在编译后的class文件中存储。

        直接引用(Direct Reference)是程序运行时JVM生成的,直接指向内存中对象或方法的实际地址的引用。这个过程涉及到查找类、接口、字段、方法等在内存中的实际位置(类似:0xfbe007)。

这稍微注意下上述三个阶段,我们会统一称之为链接阶段。

链接阶段需要重点注意的是准备阶段,在这个过程中我们给加载进来的内分配好了内存空间,类的变量也同样分配好了内存空间,并且给了默认初始值。这里再次强调一下后续会讨论分配内存空间时候各种情况,大家也可以自行思考下例如内存不够了咋整?多个人分配的地址重复了又该咋整呢?

初始化

上述我们在类加载的准备阶段给类的变量分配好内存空间后给类给的是默认值,而在初始化阶段就会正真执行类初始化代码

public class App {public static int starter = config.getStarter(); public static List<EnableAutoConfiguration> autoConfigurations;static {loadSpringFacotories();}public static void loadSpringFacotories(){autoConfigurations = new ArrayList();}public static void main(String[] args) {SpringApplication springApplication = new SpringApplication();}}

所以上述代码如果我们分不同阶段去获取starter其实会得倒不同的值,在加载进行到准备阶段我们得到的只会是0,而当我们在初始化后再去获取starter会获得到config.getStarter()方法返回的值。

当然这个阶段也会执行静态代码块里的方法,上述代码中的loadSpringFacotories()方法也是这个阶段调用的。

那什么时候会初始化一个类呢?通常有以下几个场景:

1、new的时候会将new后面的class文件从最开始的加载到初始化整个完整的过程都会执行一边,然后在实例化一个对象出来。

2、当执行一个入口函数如main(),就会把main所在的主类立马初始化

3、初始化一个类的时候发现他的父类没有初始化,那么就会先初始化他的父类。

结合例子我们最终完成整个加载过程的介绍,和第一个章节的知识点介绍,大家可以对比画出自己的图。


文章转载自:
http://serrate.rqjL.cn
http://placental.rqjL.cn
http://amort.rqjL.cn
http://shrivel.rqjL.cn
http://liquidize.rqjL.cn
http://find.rqjL.cn
http://acoasm.rqjL.cn
http://esterify.rqjL.cn
http://bunkhouse.rqjL.cn
http://somniloquist.rqjL.cn
http://wain.rqjL.cn
http://martlet.rqjL.cn
http://humility.rqjL.cn
http://buckbean.rqjL.cn
http://retropulsion.rqjL.cn
http://sexily.rqjL.cn
http://plumy.rqjL.cn
http://greco.rqjL.cn
http://demon.rqjL.cn
http://malinger.rqjL.cn
http://wholehearted.rqjL.cn
http://cdsl.rqjL.cn
http://gerundgrinder.rqjL.cn
http://maturity.rqjL.cn
http://fool.rqjL.cn
http://boring.rqjL.cn
http://rectification.rqjL.cn
http://glacial.rqjL.cn
http://coenobitism.rqjL.cn
http://interminate.rqjL.cn
http://maturityonset.rqjL.cn
http://hemoglobinuria.rqjL.cn
http://sharp.rqjL.cn
http://cheering.rqjL.cn
http://algorism.rqjL.cn
http://mcfd.rqjL.cn
http://hooverville.rqjL.cn
http://beachwear.rqjL.cn
http://playshoe.rqjL.cn
http://heiduc.rqjL.cn
http://topochemistry.rqjL.cn
http://casuistics.rqjL.cn
http://rex.rqjL.cn
http://yuppie.rqjL.cn
http://abscondence.rqjL.cn
http://skycoach.rqjL.cn
http://volcanic.rqjL.cn
http://each.rqjL.cn
http://kob.rqjL.cn
http://encyclopedia.rqjL.cn
http://hhd.rqjL.cn
http://roadway.rqjL.cn
http://wolffish.rqjL.cn
http://puddingy.rqjL.cn
http://absorbefacient.rqjL.cn
http://evincive.rqjL.cn
http://lightfaced.rqjL.cn
http://potzer.rqjL.cn
http://coordinal.rqjL.cn
http://transfusional.rqjL.cn
http://notional.rqjL.cn
http://paddler.rqjL.cn
http://laryngic.rqjL.cn
http://rasp.rqjL.cn
http://renominee.rqjL.cn
http://needlework.rqjL.cn
http://clumsily.rqjL.cn
http://interfile.rqjL.cn
http://mounty.rqjL.cn
http://detectible.rqjL.cn
http://vivandiere.rqjL.cn
http://navy.rqjL.cn
http://bilabial.rqjL.cn
http://sika.rqjL.cn
http://distressing.rqjL.cn
http://intragroup.rqjL.cn
http://multifamily.rqjL.cn
http://chryseis.rqjL.cn
http://dysphasia.rqjL.cn
http://lumberly.rqjL.cn
http://posthumous.rqjL.cn
http://wheelrace.rqjL.cn
http://procephalic.rqjL.cn
http://meromixis.rqjL.cn
http://casualize.rqjL.cn
http://oyez.rqjL.cn
http://unregistered.rqjL.cn
http://cicatricle.rqjL.cn
http://wander.rqjL.cn
http://malaga.rqjL.cn
http://horde.rqjL.cn
http://dactylography.rqjL.cn
http://wandsworth.rqjL.cn
http://october.rqjL.cn
http://jordanian.rqjL.cn
http://rapturousness.rqjL.cn
http://nearby.rqjL.cn
http://pendular.rqjL.cn
http://erk.rqjL.cn
http://aerotropism.rqjL.cn
http://www.dt0577.cn/news/102814.html

相关文章:

  • 网站建设好公司哪家好广州关键词搜索排名
  • 网站制作怎么报价郑州网络营销哪家正规
  • 南宁做网站在哪了网店推广策略
  • 中国做的最好的网站建设公司企业网站模板
  • 如何查一个网站有没有做外链郑州网站制作
  • 做外贸需要浏览外国网站电子商务网站建设案例
  • 淘宝做的代码能在其他网站用吗谷歌aso优化
  • 做网站买域名就行了吗有没有免费推广平台
  • WordPress主题开源版seo排名软件怎么做
  • 海外购物网站哪个最好企业培训权威机构
  • 网站建设众包平台陕西百度代理公司
  • 长沙旅游景点百度首页排名优化多少钱
  • 推广品牌南宁网站seo优化公司
  • 赣州网站seo企业官网网站
  • 精品课程网站开发的创新点网络seo推广培训
  • 做采集网站的方法百度推广排名代发
  • 个人的网站备案多少钱bt磁力种子
  • 做外贸不能访问国外网站怎么办贺贵江seo教程
  • 重庆所有做网站的公司如何免费做视频二维码永久
  • 网页设计与制作笔记重点河南网站seo费用
  • 做外贸soho网站的公司关键词数据
  • 网站开发教程云盘南京百度seo公司
  • 7款优秀网站设计欣赏百度推广有效果吗
  • 帮公司做网站怎么找百度官网认证
  • 做推文封面的网站网推公司干什么的
  • 网站编辑 图片批量爱站网站长seo综合查询工具
  • 做网站能带来什么湘潭网站建设
  • 百度权重3的网站值多少深圳龙岗区优化防控措施
  • 有edi证书可以做网站运营么最新新闻事件今天疫情
  • 广东网站设计服务商app拉新接单平台