您的位置:首页 > 财经 > 产业 > seo策略怎么写举例_如何搭建网站的结构_搜索引擎营销的内容和层次有哪些_产品软文范例500字

seo策略怎么写举例_如何搭建网站的结构_搜索引擎营销的内容和层次有哪些_产品软文范例500字

2024/12/25 13:44:09 来源:https://blog.csdn.net/2401_83447580/article/details/144272196  浏览:    关键词:seo策略怎么写举例_如何搭建网站的结构_搜索引擎营销的内容和层次有哪些_产品软文范例500字
seo策略怎么写举例_如何搭建网站的结构_搜索引擎营销的内容和层次有哪些_产品软文范例500字

JVM(Java虚拟机)类加载子系统是Java运行时环境的重要组成部分,它负责将编译后的Java类(.class文件)加载到内存中,并对其进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型。以下是关于JVM类加载子系统的详细解释:

一、类加载过程

一个类的完整生命周期包括加载、验证、准备、解析、初始化、使用和卸载七个阶段。其中,加载、验证、准备、解析和初始化是类加载过程的前五个阶段,也是类加载子系统主要关注的部分。

  1. 加载(Loading)

    • 通过一个类的全限定名获取定义此类的二进制字节流。
    • 将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构。
    • 在内存中生成一个代表这个类的java.lang.Class对象,作为方法区这个类的各种数据的访问入口。
  2. 验证(Verification)

    • 目的在于确保Class文件的字节流中包含的信息符合当前虚拟机要求,保证被加载类的正确性,不会危害虚拟机自身安全。
    • 主要包括四种验证:文件格式验证、元数据验证、字节码验证和符号引用验证。
  3. 准备(Preparation)

    • 为类变量分配内存并设置类变量初始值。这些内存都将在方法区中分配(在JDK 7及之后的版本中,某些类变量可能会随着Class对象一起存放在Java堆中)。
    • 初始值通常是数据类型默认的零值(如0、0L、null、false等)。对于被final修饰的类变量,在准备阶段就会被赋予用户希望的值。
  4. 解析(Resolution)

    • 将常量池内的符号引用转换为直接引用的过程。
    • 符号引用就是一组符号来描述目标,可以是任何字面量。直接引用就是直接指向目标的指针、相对偏移量或一个间接定位到目标的句柄。
    • 解析动作主要针对类或接口、字段、类方法、接口方法、方法类型等。
  5. 初始化(Initialization)

    • 执行类构造器()方法的过程。
    • ()方法由javac编译器自动收集类中的所有类变量的赋值动作和静态代码块中的语句合并而来。
    • 若该类具有父类,JVM会保证子类的()执行前,父类的()已经执行完毕。

二、类加载器

类加载器负责加载所有的类,所有被载入内存中的类都生成一个java.lang.Class实例对象,该对象用于代表该类。JVM预定义有三种类加载器:

  1. 根类加载器(Bootstrap ClassLoader)

    • 最顶层的加载类,由C++实现,负责加载$JAVA_HOME/lib目录下的jar包和类或者被-Xbootclasspath参数指定的路径中的所有类。
    • 它不是ClassLoader的子类,因此无法被Java程序直接引用。
  2. 扩展类加载器(Extension ClassLoader)

    • 主要负责加载$JRE_HOME/lib/ext目录下的jar包和类,或被java.ext.dirs系统变量所指定的路径下的jar包。
    • 由Java语言实现,是ClassLoader的子类。
  3. 系统类加载器(System ClassLoader,也称为应用程序类加载器Application ClassLoader)

    • 面向用户的加载器,负责加载当前应用classpath下的所有jar包和类。
    • 父类加载器为扩展类加载器。

除了这三种预定义的类加载器外,用户还可以自定义类加载器,通过继承java.lang.ClassLoader类并重写其方法来实现。自定义类加载器可以用于隔离加载类、修改类加载的方式、扩展加载源以及防止源码泄露等场景。

三、双亲委派模型

在Java的类加载器中,采用了一种双亲委派模型。当一个类加载器收到类加载请求时,它并不会自己先去加载,而是把这个请求委托给父类的加载器去执行。如果父类加载器找不到指定的类,那么子类加载器才会尝试自己去加载这个类。这种模型可以确保Java核心类库的类型安全,避免类的重复加载。

综上所述,JVM类加载子系统是Java运行时环境的关键组成部分,它负责将编译后的Java类加载到内存中,并对其进行校验、转换解析和初始化。通过类加载器和双亲委派模型,JVM能够确保类的正确加载和类型安全。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com