打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
JVM虚拟机------类加载器

类加载器分类

public class StackStruTest {    public static void main(String[] args) {        // 对用户自定义个类来说:默认使用系统类加载器进行加载-----AppClassLoader        ClassLoader classLoader = StackStruTest.class.getClassLoader();        System.out.println(classLoader);        // 获取其上层:扩展类加载器   -------ExtClassLoader        ClassLoader extClassLoader = classLoader.getParent();        System.out.println(extClassLoader);        // 获取其上层:获取不到引导类加载器---bootStrapClassLoader ----- 但是获取不到的所以是null        ClassLoader bootstrap = extClassLoader.getParent();        System.out.println(bootstrap);        // 么的了,所以会报错        ClassLoader --- = bootstrap.getParent();        System.out.println(---);    }}

 

 

 虚拟机自带的加载器

Bootstrap ClassLoader 启动类加载器

  1. 这个类加载器通过c/c 语言实现,嵌套再JVM内部
  2. 它用来加载Java核心库(jre/lib/rt.jar)(rt:runtime)或者sun.boot.class.path路径下的内容,用于JVM自身需要的类
  3. 并不继承自java.lang.ClassLoader,没有父加载器
  4. 加载【扩展类】和【应用加载器】,并指定为他们的父类加载器
  5. 出于安全考虑,Bootstrap启动类加载器只加载java、javax、sun等开头的类

扩展类加载器  Extension ClassLoader

  1. java语言编写,由sun.misc.Launcher$ExtClassLoader实现
  2. 派生于ClassLoader
  3. 父类加载器为启动类加载器
  4. 从java.ext.dirs系统属性所指定的目录中加载类库,或从JDK的安装目录的jre/lib/ext子目录下加载类库。如果用户创建的JAR放在此目录下,也会自动由扩展类加载器加载

应用程序类加载器 AppClassLoader

  1. 由java编写,sun.misc.Launcher$AppClassLoader实现
  2. 派生于ClassLoader
  3. 父类加载器为扩展器加载器
  4. 它扶着加载环境变量classpath或者系统属性 java.class.path指定路径下的类库
  5. 该类加载是程序中默认的类加载器,一般来说,java应用的类都是由它来完成加载
  6. 通过ClassLoader #getSystemClassLoader()方法可以获取到该类的加载器

用户自定义加载器

 

 

 

 ClassLoader

抽象类

getParent():返回该类的超类加载器loadClass(String name):查找name的类,返回结果为Java.lang.class类的实例findClass(String name):查找name的类,返回结果为java.lang.class类的实例findLoadedCLass(String name):查找name的已经被加载过的类,返回结果为Java.lang.class类的实例defineClass(String name, byte[]b, int off, int len):把字节数组b中的内容转换为一个Java类,返回结果为Java.lang.Class类的实例resolveClass(Class<?>c),连接指定的java类

 

获取当前的ClassLoader途径

class.getClassLoader()Threa.currentThread().getContextClassLoader()ClassLoader.getSystemClassLoader()DriveManager.getCallerClassLoader()

 

来源:https://www.icode9.com/content-4-699551.html
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
java Class类
java基础:Q8. 类加载器的相关知识
Java高级篇——深入浅出Java类加载机制
Java类加载机制
一个Java程序的执行过程
classLoader动态加载
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服