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

建个企业网站网站建设仿站企业公司

建个企业网站,网站建设仿站企业公司,做网站app,学校网站报价单文章目录 类的生命周期加载验证准备解析初始化简要概括 类的生命周期 一个类型从被加载到虚拟机内存中开始#xff0c;到卸载出内存为止#xff0c;它的整个生命周期将会经历加载 #xff08;Loading#xff09;、验证#xff08;Verification#xff09;、准备#xf… 文章目录 类的生命周期加载验证准备解析初始化简要概括 类的生命周期 一个类型从被加载到虚拟机内存中开始到卸载出内存为止它的整个生命周期将会经历加载 Loading、验证Verification、准备Preparation、解析Resolution、初始化 Initialization、使用Using和卸载Unloading七个阶段其中验证、准备、解析三个部分统称 为连接Linking。 加载、验证、准备、初始化和卸载这五个阶段的顺序是确定的类型的加载过程必须按照这种顺序按部就班地开始是开始不是完成而解析阶段则不一定它在某些情况下可以在初始化阶段之后再开始 这是为了支持Java语言的运行时绑定特性也称为动态绑定或晚期绑定。 加载 在加载阶段Java虚拟机需要完成以下三件事情 通过一个类的全限定名来获取定义此类的二进制字节流。 将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构。 在内存中生成一个代表这个类的java.lang.Class对象作为方法区这个类的各种数据的访问入口。 不同的虚拟机实现细节有所不同 验证 验证是连接阶段的第一步这一阶段的目的是确保Class文件的字节流中包含的信息符合《Java虚拟机规范》的全部约束要求保证这些信息被当作代码运行后不会危害虚拟机自身的安全。 验证阶段大致上会完成下面四个阶段的检验动作 文件格式验证首先验证字节流是否符合Class文件格式的规范并且能被当前版本的虚拟机处理例如是否以魔数0xCAFEBABE开头。主、次版本号是否在当前Java虚拟机接受范围之内。等 元数据验证第二阶段是对字节码描述的信息进行语义分析、校验以保证其描述的信息符合《Java语言规范》的要求例如这个类是否有父类这个类的父类是否继承了不允许被继承的类如果这个类不是抽象类是否实现了其父类或接口之中要求实现的所有方法等等 字节码验证第三阶段是整个验证过程中最复杂的一个阶段主要目的是通过数据流分析和控制流分析确定序语义是合法的、符合逻辑的。例如保证任何跳转指令都不会跳转到方法体以外的字节码指令上例如不会出现类似于“在操作栈放置了一个int类型的数据使用时却按long类型来加载入本地变量表中”这样的情况等等 符号引用验证最后一个阶段的校验行为发生在虚拟机将符号引用转化为直接引用的时候这个转化动作将在连接的第三阶段—解析阶段中发生。通俗来说就是该类是否缺少或者被禁止访问它依赖的某些外部类、方法、字段等资源。例如符号引用中通过字符串描述的全限定名是否能找到对应的类在指定类中是否存在符合方法的字段描述符及简单名称所描述的方法和字段等等 准备 准备阶段是正式为类中定义的变量即静态变量被static修饰的变量分配内存并设置类变量初始值的阶段这时候进行内存分配的仅包括类变量而不包括实例变量。 类变量在准备阶段之后的默认值如下 public static int value 123对于上面代码在准备阶段之后value的值为0而不是123把value赋值为123指令存放于类构造器client()方法之中要到类的初始化阶段才会被执行。 如果类字段的字段属性表中存在ConstantValue属性那在准备阶段变量值就会被初始化为ConstantValue属性所指定的初始值 public static final int value 123;上面使用了final修饰value那么value在准备阶段之后就是123了不会使用默认值。 解析 解析阶段是Java虚拟机将常量池内的符号引用替换为直接引用的过程这句话的具体解释如下 符号引用Symbolic Reference在Java源代码中类和成员字段、方法的引用通常以符号引用的形式存在。这些引用是一种符号性的标识指向了目标类或成员的名字、描述符等信息。例如String类型的字段引用可能是 Ljava/lang/String; 这样的描述。直接引用Direct Reference与符号引用不同直接引用是一个指向内存位置的指针或句柄它可以直接用于访问目标类或成员的内存地址。直接引用是实际的内存指针或句柄可以直接执行实际操作。解析Resolution解析是将符号引用转化为直接引用的过程。在Java类加载过程中虚拟机需要知道如何定位并访问目标类或成员因此需要将符号引用解析为直接引用。这通常涉及到查找目标类的内存地址、方法的内存偏移量等信息。可选性解析阶段在类加载过程中是可选的。这意味着不是每个类加载过程都需要执行解析。解析通常在需要使用某个类或成员的时候才会进行而且某些情况下虚拟机可能会跳过解析直接使用符号引用来访问目标。 总结来说解析是将类或成员的符号引用转化为直接引用的过程但它并不一定在每次加载类时都执行。虚拟机可能会延迟解析只在需要的时候执行以提高性能和节省资源。这个过程有助于虚拟机在运行时准确访问类或成员的内存位置。 举一个简单的例子如下 public class MathUtil {public static int add(int a, int b) {return a b;} }public class Test {public static void main(String[] args) {int result MathUtil.add(5, 3);System.out.println(Result: result);} }在Test类中MathUtil.add(5, 3) 是一个符号引用它指向了 MathUtil 类和 add 方法但它并没有直接指向方法的内存地址或偏移量。 解析阶段会将这个符号引用转化为直接引用以便能够执行实际的方法调用。这个过程涉及查找 MathUtil 类的内存地址并获取 add 方法的内存偏移量。一旦解析完成就可以直接调用 add 方法的内存地址 初始化 简单来说初始化阶段就是执行类构造器client()方法的过程。 client()()方法是由编译器自动收集类中的所有类变量的赋值动作和静态语句块static{}块中的语句合并产生的编译器收集的顺序是由语句在源文件中出现的顺序决定的静态语句块中只能访问 到定义在静态语句块之前的变量定义在它之后的变量在前面的静态语句块可以赋值但是不能访问 public class Test {static {i 0; // 给变量复制可以正常编译通过System.out.print(i); // 这句编译器会提示“非法向前引用”}static int i 1; }client()()方法对于类或接口来说并不是必需的如果一个类中没有静态语句块也没有对变量的赋值操作那么编译器可以不为这个类生成client()()方法 Java虚拟机必须保证一个类的client()()方法在多线程环境中被正确地加锁同步如果多个线程同 时去初始化一个类那么只会有其中一个线程去执行这个类的()方法其他线程都需要阻塞等待直到活动线程执行完毕client()()方法。 《Java虚拟机规范》 严格规定了有且只有六种情况必须立即对类进行“初始化” 遇到new、getstatic、putstatic或invokestatic这四条字节码指令时如果类型没有进行过初始化则需要先触发其初始化阶段。使用java.lang.reflect包的方法对类型进行反射调用的时候如果类型没有进行过初始化则需要先触发其初始化。当初始化类的时候如果发现其父类还没有进行过初始化则需要先触发其父类的初始化。当虚拟机启动时用户需要指定一个要执行的主类包含main()方法的那个类虚拟机会先初始化这个主类。如果一个java.lang.invoke.MethodHandle实例最后的解 析结果为REF_getStatic、REF_putStatic、REF_invokeStatic、REF_newInvokeSpecial四种类型的方法句 柄并且这个方法句柄对应的类没有进行过初始化则需要先触发其初始化。当一个接口中定义了JDK 8新加入的默认方法被default关键字修饰的接口方法时如果有这个接口的实现类发生了初始化那该接口要在其之前被初始化。 简要概括 类加载过程分为以下几个简单的阶段 加载Loading从磁盘或网络加载类的字节码到内存形成类的结构。验证Verification确保加载的字节码合法且不包含安全风险。准备Preparation为类的静态变量分配内存并初始化为默认值。解析Resolution可选将符号引用转化为直接引用以便正确访问类和成员。初始化Initialization执行类的初始化代码包括静态初始化块和静态字段的赋值。 这些阶段确保了类在运行时能够被正确加载和使用。其中解析是可选的其他阶段通常都会执行。
http://www.hkea.cn/news/14417718/

相关文章:

  • 免费海报在线制作网站如何查询一个app的开发信息
  • 抖音代运营公司东营做网站优化哪家好
  • 做网站都可以做什么黑帽seo教程
  • 企业网站手机版模板免费下载网络推广营销公司
  • 取名字的网站 优帮云信游天下网站建设
  • 济南网站建设是什么意思网站推广宜选刺盾云下拉
  • 租赁网站空间成都前几年网站建设公司
  • 网站建设需要的技术手段影视类网站建设
  • 湟中县公司网站建设做外贸网站多少钱
  • 怎么知道网站是哪个公司做的深入解析wordpress(原书第2版) pdf
  • 灵台县门户网站设计免费
  • 网站建设源码导入平面设计课程培训
  • 旅游网站模板重庆市万州建设工程信息网
  • 房山建站公司成都网站建设时代汇创
  • 西宁建站济南道驰网站建设有限公司怎么样
  • 绍兴专业做网站的公司APP做网站
  • 南昌电商购物网站开发哈尔滨的网站建设公司
  • 九江网站排名建盏的好坏怎么区分
  • 品牌网站建设 意义织梦网站上传保存文档
  • 动漫谷网站建设策划书网站建设策划案模板
  • iis 新建网站没有文件夹权限展厅设计服务商
  • 新网站建设运营年计划书东营考试信息网官网2020
  • 公司找人做网站做网站的公司主要是干啥
  • 农安县建设局网站个人网站可以做网上支付吗
  • 自己怎么做网站购买空间系统开发流程和步骤
  • 网站制作的要求怎样上传网站
  • 哈尔滨建设网站哪家好网站搜索优化技巧
  • 做网站的数据库的设计网站开发语言怎么识别
  • 住房和城乡建设部课题网站山东做网站的公司有哪些
  • 惠来县建设局网站深圳企业网页制作