当前位置: 首页 > 网络应用技术

爪哇;负载的整个过程(也称为类加载机制);班级的生命周期;类加载程序(所选类加载程序基于Binsea分配的模型);

时间:2023-03-09 01:04:49 网络应用技术

  SO值的类加载过程,即类加载机构。创建对象时触发类加载机制。创建对象的过程如下所示:

  对象的创建过程通常始于新指令(JVM级别):

  (1)首先检查新指令的参数是否可以在类别中找到符号引用;

  (2)如果没有,则意味着尚未加载课程,

  (3)如果有的话,虚拟机将为桩中的新对象分配内存。内存的分配是:指针碰撞和空闲列表。哪种分布方法是由Java堆确定的,以及Java堆是否定期由垃圾收集器用于压缩和整理。

  在IDE中,编写相关的Java代码。在Java编译器(Java C)命令之后,您可以将IDE中写入的.java文件编译为.class文件;

  注意:1。.class文件是二进制文件。该文件包含字节码说明信息;字节码指令是一个命令。两者不是同一回事。

  2.许多博客谈论.class文件是字节代码文件。

  .class文件包含字节码指令;

  在加载Java类的整个过程中,第一步是加载过程。请注意,此过程是不同的;

  这是基于两个父母分配机制,然后选择了合适的类加载程序。在此主要完成任务中:

  上面的扩展说明:

  它也可以称为两个父母的任命机制;当类加载程序接收到加载类的请求时,加载程序不会直接加载此类,而是将此请求委托给您的父亲加载器,以尝试加载,然后按Layer the Lote The Artistment,直到加载程序的最高层:启动类Loader;当启动类加载程序无法加载时,它将被传递给层,以便子类加载器可以尝试加载类。

  1.保证安全。在加载JDK自己携带的相关类后,将不会加载与JDK的同一名称的类。除非将JDK安装的位置替换为JDK代码,否则它可以确保程序的安全性;开发开发;加载服务器上的人员等级,不会被其他人所写的班级所取代,以确保程序操作的安全性;

  2.避免重复班级的加载,并判断已经加载了一个类,然后将不会再次加载。

  1.用户可以在LoadClass中编写一些代码。目前,它可能会破坏双边任命机制;两重点的实现主要在LoadClass方法中实现。重写此类将破坏双极任命机制,但通常建议使用FindClass,这可以确保可以保证您的类负载逻辑,并且不会破坏两个父母的任命机制

  2.两个父母任命机制的设计缺陷。为了弥补,它还将破坏加载机制的类型。当基本类型调用用户代码时,使用率双眼委托机制可能会导致用户的代码加载。在这个时代重要的机制下;

  在基于双重要求模型的基于上述的类加载器加载后,加载类的整个过程将继续;

  在整个课程加载过程中,它将体验加载 - 验证 - 准备 - 分析 - 启动 -

  在上图中,可以关闭三个小步骤的蓝色验证,准备和分析称为连接

  上面的负载已在上述附近进行了解释,以下主要是验证和其他阶段:

  验证是连接阶段的第一步,以确保加载的.cals文件字节流中包含的信息满足“ Java虚拟机规范”的所有约束,以确保加载.class文件中的信息不是损坏了JVM;

  验证包括:文件格式验证,元数据验证,字节码验证,符号参考验证

  初始值给出了类中的变量,即,初始值给出了类中的静态变量。这些变量中使用的内存分配在方法区域中。方法区域只是JDK 8之后的逻辑区域,而不是实际的实际存在区域。

  注意:在预备阶段,仅给出0个值的静态变量,并且实例变量未给出值。通常在下面给出0个值,但是在特殊情况下,给出了类中定义的值;

  符号参考替换为直接参考过程;

  这是类加载的最后一步,将准备阶段的0值赋予了类中给定的给定值。

  换句话说,初始化阶段是执行构造函数()方法的过程;

  一个类从.class文件加载到虚拟机,并从虚拟机中卸载以下所有过程;

  负载验证预制作 - 分析initialization-use-unInStalling整个加载过程已经结束,以下是对象的使用和卸载类,整个类加载和对象的使用以及对象的使用来班级上班上的班级到班级到班级的班级。解析这样一个完整的过程称为班级的生命周期。

  类加载机制中的第一个操作:该操作包含类加载程序;换句话说,此步骤的加载需要选择适当的类加载程序,并且选定的加载程序使用选定的类加载程序;

  这些是两个不同级别的含义;

  本文介绍了Java类加载机制。类加载机制中的类加载器以及加载类是使用两个父母分配机制来选择适当的类加载器来加载类。对易于混淆的概念的简单分析。我希望每个人都能更好地了解这一知识。

  周开Java虚拟机第三版

  原始:https://juejin.cn/post/709630266997908766