2016 - 2024

感恩一路有你

java三种类加载器 java里有多少个类加载器?

浏览量:2238 时间:2021-04-14 02:46:48 作者:admin

java里有多少个类加载器?

Java类加载器分为两类,一类是系统类加载器,另一类是自定义类加载器。有三个系统类加载器:引导类加载器、扩展类加载器、系统类加载器(和线程上下文类加载器,但主要有三个);用户定义的类加载器使用继承java.lang.ClassLoader类加载器类,它不指定数量。

Java类加载器负责读取Java字节码并将其转换为java.lang.Class类班级。

类加载器主要有五个阶段:1。加载:找到要加载的类的字节码,创建实例对象

2。验证:检查字节信息,防止对虚拟机造成伤害

3。准备:为类变量分配内存,并指定初始化值

4。解析:用直接引用替换常量池中的符号引用的过程

5。初始化:如果类有一个超类,那么JVM有三种加载程序:bootstrap负责加载系统类,extclassloader负责加载扩展类,appclassloader负责加载应用程序类。他们主要负责不同领域的工作,同时也负责授权模式的实施。什么是授权模式?实际上,当类装入器需要装入时,它首先要求其父类使用父类的搜索路径进行联接。如果找不到,它将使用自己的搜索路径来搜索类。

执行Java*时。班级,java.exe文件将帮助我们找到JRE,然后找到jvm.dll这是真正的Java虚拟机。最后,加载动态库并激活Java虚拟机。在虚拟机被激活之后,它将执行一些初始化操作,例如读取系统参数。初始化完成后,将生成第一个类装入器——引导装入器。Bootstrap loader是由C语言编写的,在Bootstrap loader的初始工作中,除了一些基本的初始化操作外,最重要的是加载启动器.java并将其父加载程序设置为null,这意味着父加载程序是引导加载程序。然后引导加载程序要求再次加载启动器.java并将其父级设置为之前生成的extclassloader实体。这两个加载程序都以静态类的形式存在。需要注意的是,launcher$ExtClassLoader.class类带启动器$AppClassLoader.class类它们都是由引导加载程序加载的,所以父级与要加载的类加载程序无关。

java三种类加载器 java类加载执行顺序 java无法加载主类什么原因

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。