【jvm】类加载器的分类

这篇具有很好参考价值的文章主要介绍了【jvm】类加载器的分类。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、说明
  • 1.jvm支持两种类型的类加载器,分别是引导类加载器(bootstrap classloader)和自定义类加载器(user-defined classloader)
  • 2.自定义类加载器一般指的是程序中由开发人员自定义的一类类加载器,java虚拟机规范却没有这么定义,而是将所有派生于抽象类classloader的类加载器都划分为自定义类加载器
  • 3.在程序中,最常见的类加载器有引导类加载器、扩展类加载器、系统类加载器和自定义类加载器,是包含关系,不是上下层关系,也不是父类的继承关系
  • 4.引导类加载器是c语言编写实现的,代码无法获取到
二、示例
2.1 代码
package com.learning.classloader;

public class ClassLoaderLearning {
    public static void main(String[] args) {
        // 获取系统类加载器
        ClassLoader systemClassLoader = ClassLoader.getSystemClassLoader();
        System.out.println(systemClassLoader);

        // 获取其上层: 扩展类加载器
        ClassLoader extClassLoader = systemClassLoader.getParent();
        System.out.println(extClassLoader);

        // 试图获取其上层: 获取不到引导类加载器
        ClassLoader bootstrapClassLoader = extClassLoader.getParent();
        System.out.println(bootstrapClassLoader);

        // 对于用户自定义类型: 默认使用系统类加载器进行加载
        ClassLoader classLoader = ClassLoaderLearning.class.getClassLoader();
        System.out.println(classLoader);

        // String类型: 使用引导到加载器进行加载的,java的核心类库都是使用引导类加载器进行加载的
        ClassLoader stringClassLoader = String.class.getClassLoader();
        System.out.println(stringClassLoader);
    }
}
2.2 截图

【jvm】类加载器的分类,jvm,jvm文章来源地址https://www.toymoban.com/news/detail-645158.html

三、启动类加载器
  • 1.又叫引导类加载器、bootstrap classloader
  • 2.启动类加载器使用c/c++语言实现的,嵌套在jvm内部
  • 3.它用来加载java的核心库(java_home/jre/lib/rt.jar、resources.jar或sun.boot.class.path路径下的内容),用于提供jvm自身需要的类
  • 4.并不继承自java.lang.ClassLoader,没有父加载器
  • 5.加载扩展类和应用程序类加载器,并指定为他们的父类加载器
  • 6.处于安全考虑,bootstrap启动类加载器只加载包名为java、javax、sun等开头的类
四、扩展类加载器
  • 1.extension classloader
  • 2.java语言编写,由sun.misc.Launcher$ExtClassLoader实现
  • 3.派生于ClassLoader类
  • 4.父类加载器为启动类加载器
  • 5.从java.ext.dirs系统属性所指定的目录中加载类库,或从jdk的安全目录的jre/lib/ext子目录(扩展目录)下加载类库。如果用户创建的jar放在此目录下,也会自动由扩展类加载器加载
五、应用程序类加载器
  • 1.AppClassLoader
  • 2.java语言编写,由sun.misc.Launcher$AppClassLoader实现
  • 3.派生于ClassLoader类
  • 4.父类加载器为扩展类加载器
  • 5.负责加载环境变量classpath或系统属性java.class.path指定路径下的类库
  • 6.该类加载是程序中默认的类加载器,一般来说,java应用的类都是由它来完成加载
  • 7.通过ClassLoader$getSystemClassLoader()方法可以获取到该类加载器

到了这里,关于【jvm】类加载器的分类的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基于朴素贝叶斯分类器的西瓜数据集(实战)

    最近刚开始学习机器学习中的朴素贝叶斯分类器,用西瓜数据集做了一下,最后结果预测正确率75%,其中运用到的python语法并不复杂,适合小白观看。 目录 朴素贝叶斯分类器思想的自然语言描述: 详细步骤在代码中说明 朴素贝叶斯分类器其实就是计算先验概率和每一个属性

    2024年02月11日
    浏览(36)
  • 【Python机器学习】分类器的不确定估计——预测概率

            predict_proba的输出是每个类别的概率,通常比decision_function的输出更容易理解,对于二分类问题,它的形状始终是(n_samples,2)。         可以从结果看到,每行的第一个元素是第一个类别的估计概率,第二个元素是第二个类别的估计概率,两个类别的概率之和始终

    2024年01月20日
    浏览(45)
  • 书写自动智慧:探索Python文本分类器的开发与应用:支持二分类、多分类、多标签分类、多层级分类和Kmeans聚类

    文本分类器,提供多种文本分类和聚类算法,支持句子和文档级的文本分类任务,支持二分类、多分类、多标签分类、多层级分类和Kmeans聚类,开箱即用。python3开发。 Classifier支持算法 LogisticRegression Random Forest Decision Tree K-Nearest Neighbours Naive bayes Xgboost Support Vector Machine(SVM)

    2024年02月13日
    浏览(43)
  • 【OpenCV】获取各种分类器的haarcascades_*.XML 文件的详细介绍

      安装 OpenCV并获取xml文件: 首先,请参考Windows下 OpenCV 的下载安装教程(详细)中的步骤,下载 OpenCV。 一旦下载完成,请找到你的 OpenCV 安装路径。以我为例,我的路径是 d:/python/python/Lib/site-packages 。 在该路径下,你将找到一个叫做 cv2 的文件夹。 进入 cv2 文件夹后,你

    2024年02月13日
    浏览(43)
  • 混淆矩阵、精确率、召回率和F1值:如何评估分类器的性能?

    ❤️觉得内容不错的话,欢迎点赞收藏加关注😊😊😊,后续会继续输入更多优质内容❤️ 👉有问题欢迎大家加关注私戳或者评论(包括但不限于NLP算法相关,linux学习相关,读研读博相关......)👈 (封面图由文心一格生成) 在机器学习中,分类是一项非常重要的任务。在

    2024年02月02日
    浏览(61)
  • OCR文字检测与识别系统:融合文字检测、文字识别和方向分类器的综合解决方案

    前两章主要介绍了DBNet文字检测算法以及CRNN文字识别算法。然而对于我们实际场景中的一张图像,想要单独基于文字检测或者识别模型,是无法同时获取文字位置与文字内容的,因此,我们将文字检测算法以及文字识别算法进行串联,构建了PP-OCR文字检测与识别系统。在实际

    2024年02月10日
    浏览(53)
  • 【Chatgpt4 教学】 NLP(自然语言处理)第九课 朴素贝叶斯分类器的工作原理 机器学习算法

    我在起,点更新NLP自然语言处理==》《 王老师带我成为救世主 》 为啥为它单独开章,因为它值得,它成功的让我断了一更,让我实践了自上而下找能够理解的知识点,然后自下而上的学习给自己的知识升级,将自己提升到能够解决当前遇到的问题的水平。 (1)--------------

    2023年04月15日
    浏览(52)
  • 【JVM】JVM类加载机制

    JVM的类加载机制,就是把类,从硬盘加载到内存中 Java程序,最开始是一个Java文件,编译成.class文件,运行Java程序,JVM就会读取.class文件,把文件的内容,放到内存中,并且构造成.class类对象 这里的加载是整个类加载的一个阶段,他和类加载是不同的 在整个类加载的过程中 主要任务就是

    2024年02月07日
    浏览(51)
  • JVM类加载机制-JVM(一)

    我们运行一个.class文件,windows下的java.exe调用底层jvm.dll文件创建java虚拟机(c++实现)。 创建一个引导类加载器实例(c++实现) C++调用java代码Launcher,该类创建其他java类加载器。 Launcher.getClassLoader()调用loaderClass加载运行类Math classLoader.loader(“com.jvm.math”)加载main方法入口

    2024年02月12日
    浏览(46)
  • JVM类加载&双亲委派-JVM(二)

    上篇文章说了java类的加载,验证、准备、解析、初始化。类的初始化必须是类加载完才执行,所以类的构造方法初始化是在静态方法之后执行。 JVM类加载机制-JVM(一) 一、类加载和双亲委派机制 前面类加载主要通过类加载器实现,类加载器有这几种: 引导类加载器:负责

    2024年02月11日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包