首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

JAVA之ClassLoader

JAVA基础系列之ClassLoader 一,Java类的加载、链接与初始化 1,加载:查找并加载类的二进制数据 • 通过一个类的全限定名来获取定义此类的二进制字节流 • 将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构...ClassLoader总共分为以下四种: 1,根(Bootstrap)类加载器 该类加载器没有父加载器,他负责加载虚拟机的核心类库,如java.lang.*等。...跟类加载器的实现依赖于底层操作系统属于虚拟机实现的一部分,它并没有继承java.lang.ClassLoader类。 2,扩展(Extension)类加载器 它的父类加载器为根类加载器。...扩展类加载器是纯Java类,是java.lang.ClassLoader类的子类。 3,系统类加载器 也称为应用类加载器,它的父加载器为扩展类加载器。...系统类加载器是纯Java类,是java.lang.ClassLoader类的子类。 除了以上虚拟机自带的加载器,用户也可以继承java.lang.ClassLoader类实现自定义加载器。

63290
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Java ClassLoader 透析

    ClassLoader 是 Java 届最为神秘的技术之一,无数人被它伤透了脑筋,摸不清门道究竟在哪里。网上的文章也是一篇又一篇,经过本人的亲自鉴定,绝大部分内容都是在误导别人。...BootstrapClassLoader 负责加载 JVM 运行时核心类,这些类位于 JAVA_HOME/lib/rt.jar 文件中,我们常用内置库 java.xxx.* 都在里面,比如 java.util...、java.io.、java.nio.、java.lang. 等等。这个 ClassLoader 比较特殊,它是由 C 代码实现的,我们将它称之为「根加载器」。...class Driver { static { try { java.sql.DriverManager.registerDriver(new Driver()); }...$ cd ~/source/jcl/v2 $ javac Dep.java $ cd ~/source/jcl $ javac Test.java $ java Test v1 v2 false 在这个例子中如果两个

    51720

    浅入Java ClassLoader

    2.2.1 BootstrapClassLoader 负责加载 JVM 运行时核心类,这些类位于 $JAVA_HOME/lib/rt.jar 文件中,我们常用内置库 java.xxx.* 都在里面,比如...java.util....、java.io.、java.nio.、java.lang. 等等。这个 ClassLoader 比较特殊,它是由 C 代码实现的,我们将它称之为「根加载器」。...2.2.2 ExtensionClassLoader 负责加载 JVM 扩展类,比如 swing 系列、内置的 js 引擎、xml 解析器 等等,这些库名通常以 javax 开头,它们的 jar 包位于 $JAVA_HOME...而是把这个请求委派给父类加载器去完成,每一个层次的类加载器都是如此,因此所有的加载请求最终请求都应该传送到顶层的启动类加载器中,只有当父加载器反馈自己无法完成这个加载请求(它的搜索范围中没有所需的类)时,子加载器才会自己尝试加载.Java

    34920

    今天来聊Java ClassLoader

    Java 中大概有四种类加载器,分别是:启动类加载器(Bootstrap ClassLoader),扩展类加载器(Extension ClassLoader),系统类加载器(System ClassLoader...),自定义类加载器(Custom ClassLoader),依次属于继承关系(注意这里的继承不是 Java 类里面的 extends。...3.启动类加载器(Bootstrap ClassLoader):主要负责加载存放在Java_Home/jre/lib下,或被-Xbootclasspath参数指定的路径下的,并且能被虚拟机识别的类库(如...*开头的类均被Bootstrap ClassLoader加载),启动类加载器是无法被Java程序直接引用的。...4.扩展类加载器(Extension ClassLoader):主要负责加载器由sun.misc.Launcher$ExtClassLoader实现,它负责加载Java_Home/jre/lib/ext

    46020

    深入分析Java ClassLoader原理

    二、Java默认提供的三个ClassLoader BootStrap ClassLoader:称为启动类加载器,是Java类加载层次中最顶层的类加载器,负责加载JDK中的核心类库,如:rt.jar、resources.jar..._22\jre\classes Extension ClassLoader:称为扩展类加载器,负责加载Java的扩展类库,默认加载JAVA_HOME/jre/lib/ext/目下的所有jar。...注意: 除了Java默认提供的三个ClassLoader之外,用户还可以根据需要定义自已的ClassLoader,而这些自定义的ClassLoader都必须继承自java.lang.ClassLoader...类,也包括Java提供的另外二个ClassLoader(Extension ClassLoader和App ClassLoader)在内,但是Bootstrap ClassLoader不继承自ClassLoader...第三行结果说明:ExtClassLoader的类加器是Bootstrap ClassLoader,因为Bootstrap ClassLoader不是一个普通的Java类,所以ExtClassLoader

    72020

    Java 类加载器(Classloader)工作机制

    深入解析 Java 类加载器(Classloader)工作机制:优化应用程序性能的关键 摘要 大家好,我是默语,擅长全栈开发、运维和人工智能技术。...在本篇博客中,我们将详细探讨 Java 类加载器(Classloader)的工作机制,特别是三种主要的类加载器:Bootstrap Classloader、Extension Classloader 和...引言 在 Java 开发中,类加载器(Classloader)是 Java 虚拟机(JVM)中一个重要的组件,负责动态加载类到 JVM 中。...Java 类加载器(Classloader)是一个负责在运行时动态加载类的子系统。类加载器通过将字节码文件加载到内存中,并将其转换为 Java 类对象,从而使 JVM 能够执行这些类。 2....三种主要的类加载器 2.1 启动类加载器(Bootstrap Classloader) 启动类加载器是 JVM 自带的类加载器,用于加载核心 Java 类库,如 rt.jar。

    13410

    JAVA ClassLoader双亲委派机制细节研究

    我们都知道,Java类都是靠ClassLoader来加载的,而类加载器也是java类,因而java类加载器本身也要被类加载器加载,显然必须有第一个类加载器不是java类,这个加载器正是BootstrapClassLoader...我们还知道,JAVA虚拟机的ClassLoader采用“双亲委派”机制,如下图所示: 图中BootstrapClassLoader、ExtClassLoader 和 AppClassLoader是JVM...*、java.io.*、java.nio.*、java.lang.* 等等。这个 ClassLoader 比较特殊,它是由 C 代码实现的,我们将它称之为“根加载器”。...直到我看了ClassLoader.java这个类的源码: public abstract class ClassLoader { protected Class<?...77689154 类加载器简述 4、https://www.ibm.com/developerworks/cn/java/j-lo-classloader/ 深入探讨 Java 类加载器 5、https

    36230

    ClassLoader解析(二):Android中的ClassLoader

    概述 不管是Java虚拟机,还是Android中的Dalvik/ART虚拟机,都是使用ClassLoader来将Class加载到内存。...只不过Android平台上虚拟机运行的是Dex字节码,一种对class文件优化的产物,传统Class文件是一个Java源文件生成的.class文件,而Android是把所有Class文件进行合并,优化,...本文分析涉及的源码为Android API 28 Android中ClassLoader的类型 Java中的ClassLoader可以加载jar文件和class文件,这一点在Android中不适用,因为...BootClassLoader Android系统启动时会使用BootClassLoader来预加载常用类,与Java中的BootClassLoader不同,它并不是由C/C++代码实现,而是由Java...BootClassLoader是ClassLoader的内部类,并继承自ClassLoader。

    1.5K40

    Java类加载原理与ClassLoader使用总结

    前言 说来好笑,不知道怎么我就来搞Java了。...虽说大学也码了三年多的代码,但是七七八八乱糟糟的东西搞得有点多,对Java的理解也只能算是hello world,这让我感觉非常慌,尤其是看到招聘网上的一堆JD都要求深入理解JVM,再对比下自己真是自惭形秽...双亲委派模型 类加载这个概念应该算是Java语言的一种创新,目的是为了将类的加载过程与虚拟机解耦,达到”通过类的全限定名来获取描述此类的二进制字节流“的目的。实现这个功能的代码模块就是类加载器。...接着我们新建一个测试类com.mythsman.test.Main,在主函数里创建两个自定义的ClassLoader: ClassLoader classLoader1=new ClassLoader...再修改下主函数: package com.mythsman.test; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Paths

    28740

    Java ClassLoader:深入理解与实际应用

    Java 中的 ClassLoader 是一个 非常基础但又很重要 的机制。每当你启动一个 Java 程序时,ClassLoader 就会负责 加载类到 JVM 中,并确保类的唯一性和隔离性。...什么是 ClassLoader? ClassLoader 是 Java 中的一个抽象类,它用于将 字节码 (.class 文件) 加载到 JVM 中,并在运行时解析类的依赖关系。...Java 中有三个常见的 ClassLoader: Bootstrap ClassLoader:负责加载 Java 核心库(例如 java.lang.* 等)。...OSGi 的动态模块加载 OSGi 是一个模块化系统和服务平台,它充分利用了 Java 的 ClassLoader 机制。...总结 Java 的 ClassLoader 是一个非常强大的机制,它不仅仅负责类的加载,还提供了类的隔离性和动态性。

    11510

    深入理解Java类加载器(ClassLoader)

    在java程序的日常开发中,类的加载几乎是前面三种类加载相互配合执行的,在必要时,我们还可以自定义类加载器(ClassLoader),因为JVM自带的类加载只是懂得从本地文件系统加载标准的class文件...ClassLoader extcl)throws IOException{final String s = System.getProperty("java.class.path");final File...parent的赋值是在ClassLoader对象的构造方法中,它又两个情况 由外部类创建ClassLoader时直接指定一个ClassLoader作为parent。...2.保证Java程序安全稳定运行。 11.ClassLoader源码分析 ClassLoader是一个抽象类,所有的类加载器都继承自ClassLoader(不包括启动类加载器)。...package com.example.day08;import java.io.;/** 自定义类加载器*/ public class MyClassLoader extends ClassLoader

    36410

    ClassLoader解惑

    一、什么是Classloader 一个Java程序要想运行起来,首先需要经过编译生成 .class文件,然后创建一个运行环境(jvm)来加载字节码文件到内存运行,而.class 文件是怎样被加载中jvm...中的就是Java Classloader所做的事情。...另外理解 cl只能加载jar里面的文件夹里面的class文件,不能加载jar里面嵌套的jar里面的class,这个很重要 二、Java自带的Classloader 2.1 BootstrapClassloader...选项或使用- D选项指定sun.boot.class.path系统属性值可以指定附加的类,它不是 java.lang.ClassLoader的子类,而是由JVM自身实现的该类c 语言实现,Java程序访问不到该加载器...2.6 Java中如何构造三种类加载器的结构 下面从源码来分析下JVM是如何构建内置classloader的,具体是rt.jar包里面sun.misc.Launcher类: public Launcher

    1.4K10
    领券