【Java小知识点】类加载器的区别
  lh6O4DgR0ZQ8 2023年11月02日 33 0

在Java中,类加载器(Class Loader)根据其加载类的来源和工作方式可以分为不同的分类。主要的类加载器分类如下:

启动类加载器(Bootstrap Class Loader):

启动类加载器是Java虚拟机的一部分,它负责加载Java平台核心库(Java API的一部分,如java.lang、java.util等)。 它是虚拟机本身的一部分,通常由C++编写,不是一个Java对象,也不继承java.lang.ClassLoader。 扩展类加载器(Extension Class Loader):

扩展类加载器负责加载Java的扩展库(Java标准库之外的一些功能,位于jre/lib/ext目录下)。 通常使用Java编写,是标准的ClassLoader的子类。 应用程序类加载器(Application Class Loader):

应用程序类加载器是最常用的加载器,负责加载应用程序的类,包括应用程序自身的类和第三方类库。 通常是系统类加载器的子类,由Java编写。 自定义类加载器:

开发者可以创建自定义类加载器,以实现特定的需求,例如从网络加载类、加密类文件等。 自定义类加载器需要继承java.lang.ClassLoader类,并覆盖其中的方法,例如findClass和loadClass。 另外,还可以根据加载类的顺序将类加载器分为以下三个主要类别:

双亲委派模型:

Java类加载器遵循双亲委派模型,即每个类加载器在尝试加载一个类之前,会先委派给其父加载器。这种模型有助于确保类加载的一致性和安全性。 如果父加载器找不到类,子加载器才会尝试加载。这意味着一些核心库类由启动类加载器加载,而应用程序类由应用程序类加载器加载。 扩展类加载器和应用程序类加载器:

扩展类加载器和应用程序类加载器通常是系统类加载器的子类,它们负责加载Java类库和应用程序的类。 这两个加载器通常是自定义类加载器的父加载器,因此开发者可以扩展它们以实现自定义加载行为。 自定义类加载器:

自定义类加载器允许开发者根据需要实现特定的加载行为,可以加载网络上的类、加密的类文件等。 自定义类加载器通常不是双亲委派模型中的一部分,开发者需要自行实现加载逻辑。 这些类加载器的分类和加载机制在Java应用程序的类加载过程中起到重要的作用,确保类能够正确加载和协同工作。

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  3I1N9ysrcSyk   2023年12月08日   24   0   0 javahapi数据交换
  DF5J4hb0hcmT   2023年12月07日   44   0   0 javaArthas
lh6O4DgR0ZQ8