首页 > 其他分享 >5 类加载器分类

5 类加载器分类

时间:2024-03-05 15:59:10浏览次数:31  
标签:Java JDK jar 分类 扩展 目录 加载

5 类加载器分类

启动类加载器(Bootstrap)

  • 启动类加载器(Bootstrap ClassLoader) 是由Hotspot虚拟机提供的、使用C++编写的类加载器
  • 默认加载Java安装目录/jre/lib下的类文件,比如rt.jar,tools.jar,resources.jar等。

通过启动类加载器加载jar包

  • 放入jre/lib下进行扩展(不推荐),尽可能不要去更改JDK安装目录中的内容,会出现即使放进去,由于文件名不匹配的问题也不会正常地被加载
  • 使用参数进行扩展(推荐),使用-Xbootclasspath/a:jar包目录/jar包名 进行扩展

扩展类加载器和应用程序类加载器

  • 扩展类加载器应用程序类加载器都是JDK中提供的、使用Java编写的类加载器
  • 它们的源码都位于sun.misc.Launcher中,是一个静态内部类。继承自URLClassLoader。具备通过目录或者指定jar包将字节码文件加载到内存中

扩展类加载器(Extension Class Loader)

​ 扩展类加载器(Extension Class Loader)是JDK中提供的使用Java编写的类加载器,默认加载Java安装目录/jre/lib/ext下的类文件

  • 放入/jre/lib/ext下进行扩展(不推荐),尽可能不要去更改JDK安装目录中的内容
  • 使用参数进行扩展(推荐),使用-Djava.ext.dirs=jar包目录进行扩展,这种方式会覆盖掉原始目录,可以用;(windows):(macos/linux)追加上原始目录

应用程序类加载器(Application)

​ 加载classpath下的类文件

JDK9及之后类加载器的变化

​ JDK9引入了module的概念,类加载器在设计上发生了很多变化

  • 启动类加载器使用Java编写,位于jdk.internal.loaderClassLoaders类中。Java中的BootClassLoader继承自BuiltinClassLoader实现从模块中找到要加载的字节码资源文件
  • 启动类加载器依然无法通过java代码获取到,返回的仍然是null,保持了统一
  • 扩展类加载器被替换成了平台类加载器 (Platform Class Loader)。平台类加载器遵循模块化方式加载字节码文件,所以继承关系从URLClassLoader变成了BuiltinClassLoader,BuiltinClassLoader实现了从模块中加载字节码文件。平台类加载器的存在更多的是为了与老版本的设计方案兼容,自身没有特殊的逻辑

标签:Java,JDK,jar,分类,扩展,目录,加载
From: https://www.cnblogs.com/miaoyindian/p/18054204

相关文章

  • R语言逻辑回归、GAM、LDA、KNN、PCA主成分分类分析预测房价及交叉验证
    全文链接:https://tecdat.cn/?p=35263原文出处:拓端数据部落公众号本研究旨在帮助客户利用房价数据集进行数据分析,该数据集包含82个变量和2930个数据点。研究目标是通过分类算法将房价分为两个类别。在数据预处理阶段,排除了Order、PID和SalesPrice等变量,对数据进行整合和转换以适......
  • ROS 加载yaml教程
    ros加载yaml文件ROS官方提供了自动加载yaml文件的功能,并且集成到了launch文件里面,只需要使用rosparam标签就能把yaml配置文件加载到ros的参数服务器里面,然后使用nodehandle.getParam()函数就可以方便的使用了。下面给出关键的使用步骤:编写yaml文件。注:避免使用-分割数组,否则......
  • python加载库
    #testInstance.pyimportimportlibimportsysclassTestInstance:def__init__(self,projectName):self.projectName=projectNameself.lib=self.load_libraries()defload_libraries(self):#Import......
  • scrapy—图片解析(图片懒加载)
    笔记-图片数据爬取之ImagesPipeline-基于scrapy爬取字符串类型的数据和爬取图片类型的数据区别?-字符串:只需要基于xpth进行解析且提交管道进行持久化存储-图片:xpath解析出图片src属性值。单独的对图片地址发起请求获取图片二进制类型的数据-Imag......
  • 08. 场景加载
    awaitable关键字本节涉及到场景的加载和卸载,在勇士传说中,我们使用协程的方式来加载和卸载场景,在本节使用了unity2023.3最新的特性awaitableawaitable具体是啥,我也不太清楚,见下图加载场景在上一节中,我们监听了LoadRoomEvent事件,成功调用了SceneLoadManager.OnLoadRoom......
  • cnpm i报错 cpm:无法加载文件c:wsers vdministratorpata Roaming mpmcnpm.ps1,因为在
    cpm:无法加载文件c:wsersvdministratorpataRoamingmpmcnpm.ps1,因为在此系统上禁止运行脚本。有关详细信息,请参阅htps:/g.microsoft.con/fvlink/?LinkID=135170中的aboutExecutionPolicies。所在位置行:1字符:1+cnpmi.+CategoryInfoSecurityError:(:)[],PsSecuri......
  • vue项目引入高德地图报错:Map container div not exist (火狐浏览器不加载地图)
    问题描述:谷歌浏览器正常显示地图,火狐浏览器不加载,并且报错:  Mapcontainerdivnotexist错误代码如下:  修改后代码如下:  参考大佬:https://blog.csdn.net/white_777/article/details/128286558  ......
  • 【STM32】使用Keil5加载程序时出现No Target Connected错误的解决办法
    错误情况加载程序时弹出Notargetconnected的Error框,随后弹出Flashdownloadfailed-TargetDLLhasbeencancelled。此时打开设置中Debug选项的Setting窗口,显示SWDIO中Notargetconnected解决办法检查设置里的Debug选项里的调试器型号有没有选对,如下图所示,我用的是S......
  • 【Filament】加载obj和fbx模型
    1前言​3D模型的常用格式主要有obj、fbx、gltf等,Filament中的filamesh.exe工具可以将obj、fbx格式转换为filamesh格式,然后再加载显示。对于gltf格式模型,可以通过ModelViewer加载显示,这不在本文的讨论范围内。​1)filamesh简介​filamesh工具的官方......
  • 内存与垃圾回收篇之(二)类加载器子系统
    类加载器子系统1.内存结构概述如果自己手写一个Java虚拟机的话,主要考虑哪些结构呢?类加载器和执行引擎2.类的加载器及类加载过程2.1类加载器子系统的作用类加载器子系统负责从文件系统或者网络中加载Class文件,class文件在文件开头有特定的文件标识。ClassLoader只负责c......