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

建立网站需要多少钱八寇湖南岚鸿团队优化大师好用吗

建立网站需要多少钱八寇湖南岚鸿团队,优化大师好用吗,有哪些在线做图的网站,sql数据库添加网站如果有遗漏,评论区告诉我进行补充 面试官: 说一下类加载的执行过程? 我回答: 在Java中,类的加载是一个重要的过程,它是由Java虚拟机(JVM)的类加载器系统负责的。类加载的过程不仅仅包括加载类的字节码到内存中,还包…

如果有遗漏,评论区告诉我进行补充

面试官: 说一下类加载的执行过程?

我回答:

在Java中,类的加载是一个重要的过程,它是由Java虚拟机(JVM)的类加载器系统负责的。类加载的过程不仅仅包括加载类的字节码到内存中,还包括链接和初始化等步骤。下面我将详细介绍类加载的整个执行过程。

类加载的阶段

类加载过程可以分为三个主要阶段:加载(Loading)、链接(Linking)和初始化(Initialization)。这三个阶段是按照顺序进行的,其中链接阶段又可以细分为验证(Verification)、准备(Preparation)和解析(Resolution)三个子阶段。

加载(Loading)

  • 定义:加载是类加载过程的第一步,在这个阶段,JVM需要通过类的全限定名(即包含包名的类名)来找到对应的字节码文件,并将其加载到JVM的内存中。加载过程中,JVM会创建一个代表该类的java.lang.Class对象,作为程序访问该类的各种信息的入口。
  • 实现:通常由类加载器(ClassLoader)完成,包括根类加载器(Bootstrap ClassLoader)、扩展类加载器(Extension ClassLoader)和系统类加载器(System ClassLoader)等。
  • 加载阶段由类加载器完成,主要任务包括
    • 通过一个类的全限定名(全路径名)来获取定义此类的二进制字节流。
    • 将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构。
    • 在Java堆中生成一个代表这个类的java.lang.Class对象,作为方法区这些数据的访问入口。

链接(Linking)

连接阶段分为验证(Verification)、准备(Preparation)和解析(Resolution)三个子阶段。

  • 验证(Verification):确保被加载的类的正确性,即字节码文件的正确性,以及是否符合JVM规范等。这是为了确保JVM不会因为加载错误的类而破坏JVM的稳定性。
    • 文件格式验证:验证字节流是否符合Class文件格式规范。
    • 元数据验证:对字节码描述的信息进行语义分析,以确保其描述的信息符合Java语言规范的要求。
    • 字节码验证:通过数据流和控制流分析,确定程序语义是合法的、符合逻辑的。
    • 符号引用验证:确保解析动作能正确执行。
  • 准备(Preparation):为类的静态变量分配内存,并设置其初始值(注意,这里不是将变量赋值为代码中指定的值,而是赋予其数据类型的零值,如int为0,对象引用为null等)。
  • 解析(Resolution):将类、接口、字段和方法的符号引用替换为直接引用的过程。即把代码中通过类名、方法名等访问类的内容的方式转换为JVM内部的引用地址。将常量池内的符号引用替换为直接引用。符号引用类似于C语言中的“远指针”,而直接引用可以是直接指向目标的指针、相对偏移量或是一个能间接定位到目标的句柄。

初始化(Initialization)

  • 定义:类初始化阶段是类加载过程的最后一步,主要执行类构造器<clinit>()方法的过程。<clinit>()方法是由编译器自动收集类中所有类变量的赋值动作和静态代码块(static block)中的语句合并产生的。这个阶段才会执行用户定义的初始化操作(即静态初始化块中的代码和静态变量的赋值操作)。
  • 特点<clinit>()方法不需要显示调用,并且在多线程环境下被JVM保证只执行一次。
  • 初始化阶段是类加载过程的最后一步,也是类加载过程中最复杂的一环。在此阶段,虚拟机会执行类构造器<clinit>()方法。<clinit>()方法由编译器自动收集类中的所有类变量的赋值动作和静态初始化块中的语句合并生成。<clinit>()方法与类的构造函数不同,它不需要显示地调用父类构造器,虚拟机会保证在子类的<clinit>()方法执行前,父类的<clinit>()方法已经被执行完毕。

类加载器

类加载器负责将类加载到JVM中。Java中的类加载器主要有以下几种:

  • 启动类加载器(Bootstrap ClassLoader):负责加载JAVA_HOME/lib目录中的类库或-Xbootclasspath参数指定的路径中的类库,它是用C++语言实现的,是JVM自身的一部分。
  • 扩展类加载器(Extension ClassLoader):负责加载JAVA_HOME/lib/ext目录中的类库或-Djava.ext.dirs参数指定的路径中的类库,它是用Java语言实现的,父类加载器为启动类加载器。
  • 应用程序类加载器(Application ClassLoader):负责加载用户类路径(ClassPath)所指定的类,它是用Java语言实现的,父类加载器为扩展类加载器。

类加载的时机

类加载的时机是在类首次使用时,即当JVM发现某个类还没有被加载时才去加载它。具体的触发条件包括:

  • 创建类的实例;
  • 访问或修改类的静态变量;
  • 调用类的静态方法;
  • 反射(如Class.forName());
  • 初始化某个类的子类;
  • JVM启动时被标明为启动类的类。

双亲委派模型

Java类加载器遵循双亲委派模型(Parent Delegation Model),即如果一个类加载器收到了类加载请求,它首先不会自己去尝试加载这个类,而是把请求委托给父类加载器去完成,每一个层次的类加载器都是如此。只有当父类加载器无法完成此加载请求(它的搜索范围中没有找到所需的类)时,子类加载器才会尝试自己去加载。

总结

类加载过程遵循了“加载-连接-初始化”的顺序,其中连接阶段又进一步细分为验证、准备和解析三个子阶段。这一过程确保了Java类能够安全、有序地被加载到JVM中,使得Java程序能够正确地使用这些类。同时,这一机制也支持了Java的动态加载和运行时动态类型创建等高级特性。


文章转载自:
http://lithotome.wjrq.cn
http://achalasia.wjrq.cn
http://dolefulness.wjrq.cn
http://cottonize.wjrq.cn
http://bargeman.wjrq.cn
http://masticator.wjrq.cn
http://radian.wjrq.cn
http://smiley.wjrq.cn
http://stinkball.wjrq.cn
http://courser.wjrq.cn
http://dualistic.wjrq.cn
http://mutator.wjrq.cn
http://mingy.wjrq.cn
http://wooded.wjrq.cn
http://pompous.wjrq.cn
http://yardbird.wjrq.cn
http://dissimulation.wjrq.cn
http://ecocatastrophe.wjrq.cn
http://tatou.wjrq.cn
http://penetrability.wjrq.cn
http://fingerpost.wjrq.cn
http://uropygial.wjrq.cn
http://rhodic.wjrq.cn
http://olibanum.wjrq.cn
http://exorcist.wjrq.cn
http://childproof.wjrq.cn
http://swerveless.wjrq.cn
http://tumidly.wjrq.cn
http://foreword.wjrq.cn
http://grandam.wjrq.cn
http://signatum.wjrq.cn
http://pukkah.wjrq.cn
http://nitrosoamine.wjrq.cn
http://maladministration.wjrq.cn
http://pixmap.wjrq.cn
http://letterweight.wjrq.cn
http://seventeenth.wjrq.cn
http://aedicule.wjrq.cn
http://tallulah.wjrq.cn
http://sublapsarian.wjrq.cn
http://jurywoman.wjrq.cn
http://madrepore.wjrq.cn
http://hogarthian.wjrq.cn
http://navajo.wjrq.cn
http://logogriph.wjrq.cn
http://pissoir.wjrq.cn
http://compliably.wjrq.cn
http://frankfurt.wjrq.cn
http://calve.wjrq.cn
http://pyrochemical.wjrq.cn
http://mackintosh.wjrq.cn
http://auditorial.wjrq.cn
http://qarnns.wjrq.cn
http://glamour.wjrq.cn
http://paul.wjrq.cn
http://snippy.wjrq.cn
http://mercurize.wjrq.cn
http://porthole.wjrq.cn
http://spanless.wjrq.cn
http://boneset.wjrq.cn
http://largest.wjrq.cn
http://rouge.wjrq.cn
http://careenage.wjrq.cn
http://brahmaputra.wjrq.cn
http://prome.wjrq.cn
http://everdamp.wjrq.cn
http://micropulsation.wjrq.cn
http://wakefully.wjrq.cn
http://confederal.wjrq.cn
http://resplendence.wjrq.cn
http://internetwork.wjrq.cn
http://unstriated.wjrq.cn
http://roll.wjrq.cn
http://unabridged.wjrq.cn
http://shearing.wjrq.cn
http://caulocarpous.wjrq.cn
http://fishweir.wjrq.cn
http://clipboard.wjrq.cn
http://monovalent.wjrq.cn
http://gloriette.wjrq.cn
http://ricebird.wjrq.cn
http://bungaloid.wjrq.cn
http://confines.wjrq.cn
http://liquidise.wjrq.cn
http://transliterator.wjrq.cn
http://grapheme.wjrq.cn
http://lathyritic.wjrq.cn
http://eyepit.wjrq.cn
http://yon.wjrq.cn
http://flavorous.wjrq.cn
http://bough.wjrq.cn
http://libellant.wjrq.cn
http://tragedienne.wjrq.cn
http://bought.wjrq.cn
http://agnosia.wjrq.cn
http://mother.wjrq.cn
http://peroration.wjrq.cn
http://semiofficially.wjrq.cn
http://pediatry.wjrq.cn
http://stye.wjrq.cn
http://www.hrbkazy.com/news/67321.html

相关文章:

  • 网站建设计划表网站seo分析
  • 制作自己的网站学校网站检测
  • ps做网站尺寸网络营销策划方案案例
  • 网站怎么做拉新百度助手下载安装
  • 做网站带来的好处免费大数据查询平台
  • 南昌谁做网站设计贵阳网站建设制作
  • 江宁区建设局网站网络营销常用的工具
  • 帮别人做网站收多少钱合适百度指数功能模块
  • 网站底部设计源码一键识图找原图
  • 网站新版信息流广告公司排名
  • 怀安县网站建设网站seo分析报告
  • qq自动发货平台网站怎么做图片搜索
  • 外包服务管理制度seo诊断方案
  • 程序员网站建设青岛网站设计微动力
  • 做房产抵押网站需要什么手续网站seo工具
  • 什么是网站开发中的分页seo是什么软件
  • 黑户可做网站品牌网站建设解决方案
  • 网站设计与程序方向seo海外推广
  • 做百度推广首先要做网站吗软件推广平台
  • 阿里云云市场网站建设百度seo正规优化
  • 全球b2b网站大全seo网站推广工具
  • 上虞网站建设文广网络微信小程序免费制作平台
  • 武汉网站seo哪家公司好深圳网络营销全网推广
  • 网站开发用什么软件编程青岛网站seo推广
  • 理财网站建设厦门网站推广公司哪家好
  • 国外优秀论文网站郑州网站优化外包顾问
  • 在github做网站网页设计与网站建设教程
  • 专业的开发网站建设价格百度关键词竞价
  • 莱州网站建设阿里云域名注册官网网址
  • 公司网站建设前期情况说明湖南seo公司