Java基础__类加载器

[java][基础]类加载器 如果一个类加载器收到了类加载请求,它并不会自己先去加载,而是把这个请求委托给父类的加载器去执行,如果父类加载器还存在其父类加载器,则进一步向上委托,依次递归,请求最终将到达顶层的启动类加载器,如果父类加载器可以完成类加载任务,就成功返回,倘若父类加载器无法完成此加载任务,子加载器才会尝试自己去加载,这就是双亲委派模式。负责为类的类变量(被static修饰的变量)分配内存,并设置默认初始化值。根据程序员通过程序制定的主观计划去初始化类变量和其他资源。(本类中如果用到了其他类,此时就需要找到对应的类) 阅读详情

类加载器的作用

类加载的作用:将class文件字节码内容加载到内存中,并将这些静态数据转换成发去的运行时数据结构。然后再堆中生成一个代表这个类的java.lang.Class对象,作为方法区中类数据的访问入口

类缓存:标准的JavaSE类加载器可以按要求查找类,但一旦某个类被加载到加载器中,它将位置加载(缓存)一段时间。不过JVM垃圾回收机制可以回收这些Class对象

类加载器作用是用来把类(class)装载进内存中,JVM规范定义了如下类型的类的加载器。

  • 引导类加载器: 用C++编写的,是JVM自带的类加载器,负责Java平台核心库,用来装载核心类库,该加载器无法直接获取。
  • 扩展类加载器: 负责jre/lib/ext 目录下的jar包或-D java.ext.dirs 指定目录下的jar包装入工作库
  • 系统类加载器: 负责java -classpath 或 -D java.class.path 所指的目录下的类与jar包装入工作,是常用的加载器
public class TestDemo01 {
    public static void main(String[] args) throws ClassNotFoundException {

        //获取系统类的假期
        ClassLoader systemClassLoader =  ClassLoader.getSystemClassLoader();
        System.out.println(systemClassLoader);

        //获取系统类加载器的父类 ---> 扩展类加载器
        ClassLoader classLoader = systemClassLoader.getParent();
        System.out.println(classLoader);

        //获取扩展类加载器的父类 --> 根加载器
        ClassLoader parent =  classLoader.getParent();
        System.out.println(parent);

        //测试当前类是哪个加载器
        ClassLoader  loader =  Class.forName("com.linke.TestDemo01").getClassLoader();
        System.out.println(loader);

        //测试JDK年内部类是谁加载的
        ClassLoader  loader1 =  Class.forName("java.lang.Object").getClassLoader();
        System.out.println(loader1);

        //如何获得系统类加载器可以加载的路径
        System.out.println(System.getProperty("java.class.path"));

    }
}
咱们继续学Java——高级篇 第一百三十一篇:之Java(类加载器与安全机制基础) 通过对Java类加载器与安全机制基础的学习,我们了解了类加载器在Java程序中的重要作用,包括类加载过程、不同类加载器的种类和职责以及它们与Java安全机制的初步联系。类加载器的正确理解和运用对于构建稳定、安全的Java应用程序至关重要。在后续的学习中,我们将深入探讨类加载器在安全方面的更多应用,如类加载器如何防止恶意类的加载、如何实现类的隔离和保护等。同时,我们也可以思考如何在实际项目中更好地利用类加载器的特性,如实现插件化架构、动态加载模块等,进一步提升Java应用程序的灵活性和可扩展性。 阅读详情

相关推荐

加密视频如何破解 如何解除机器码绑定的视频

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 如何破解加密...

Q-980767270的博客 5万+

java 启动中依赖的jar配置方式

java命令执行时默认的当前的执行路径为最高的classpath路径 方法一、使用Bootstrap Classloader来加载这些类 我们可以在运行时使用如下参数: -Xbootclasspath:完全取代系统Javaclasspath.最好不用。 -Xbootclasspath/a: 在系统class加载后加载。一般用这个。 -Xbootclasspath/p: 在系统class加载前加载,注意使用,和系统类冲突就不好了. win32java-Xbootclasspath/a:som...

weixin_39355187的博客 1061

西门子S7-1200与汇川SV660F伺服Profinet通讯调试实战

在工业自动化领域,Profinet作为工业以太网标准协议,凭借其高实时性和灵活组网能力,已成为伺服驱动器与PLC通讯的主流选择。其核心原理是通过设备名识别、IP分配以及标准报文(如111速度报文、105定位报文)传输控制字与状态字,实现驱动器的精准控制。相比传统脉冲或CANOpen方案,Profinet直连省去了协议转换网关,降低了成本与故障点,尤其适用于绕线设备、包装机械等中小型单轴或多轴运动控制系统。本文以西门子S7-1200 PLC搭配汇川SV660F伺服为例,完整梳理了从GSDMD组态、InoDri

weixin_29184371的博客 227

java djava_Java -Djava.ext.dirs启动的坑

java以jar包形式启动启动-Djava.ext.dirs=lib的作用以bat形式启动项目,linux环境需要改变语法------------------------------java -Djava.ext.dirs=d:\libs -classpath classes com.xxxclass或者设置环境变量set lib = d:\libsjava -Djava.ext.dirs=%li...

weixin_29420421的博客 3065

硬件原理图:从软件思维到硬件接口的嵌入式开发破局指南

本文为软件开发者提供了读懂硬件原理图的嵌入式开发破局指南。文章将硬件原理图类比为“硬件系统的架构图”,引导读者将软件API调用思维迁移到硬件接口理解上,详细解析了电阻、电容、二极管等常见元器件的“硬件API”功能与选型逻辑,并通过实战电路拆解,阐述了从原理图分析到驱动代码编写的完整思维链条,帮助开发者建立软硬件协同的系统级视角。

lg888的博客 495

UDS $27服务DLL文件生成

UDS 27算法 DLL文件生成

hkj8808的博客 1282

java里ext,Java与EXT相结合

EXT是里面的例子是用PHP,但在我们工程中,大多数是用Java的,在这篇博客里面,我主要要讲一些用Java来开发EXT程序的例子,而且我们争取是用Java转化为JS的形式来做EXT,这样的话,我们可以更加方便的去调试,因为Java的调试要比Javascript的调试容易得多。这里,我们要引用一个JSON的框架 - SimpleJSON,SimpleJSON的框架下载方式与使用方法,请参见http...

weixin_42301769的博客 309

双足步行机器人的ZMP与CoP检测

静态步行与动态步行   机器人步态分为静态步行和动态步行。当机器人做静态步行运动时,身体的各个部分运动速度很小,机器人的整体稳定性较易控制。静态步行稳定性采用机器人的重心地面投影点(Center of Gravity,简称CoG)作为稳定性标准,这种判定方法适用于运动较为缓慢的情况。如果机器人采用的是一种高速运动的步行方式,则称之为动态步行。当机器人进行动态步行时,其重心的位置和加速度的大小时...

weixin_34112208的博客 5906

Java指令-Djava.ext.dirs的陷阱

这两天由于现场需求,需要把ES索引写入插件改造成带安全认证的方式,加密算法是由java.security相关类实现的。在DEMO中测试了若干次都没问题,但是放到生成环境中就是报错,相关错误如下:

cyony的博客 2万+

Innovus ECO技巧:用setEcoMode+ecoAddRepeater实现批量buffer替换的5个关键步骤

本文详细介绍了在Cadence Innovus工具中,利用setEcoMode与ecoAddRepeater命令实现高效、批量Buffer/Inverter替换的工程化策略。通过启用批处理模式、构建可维护的替换规则、掌握高级定位技巧以及规避布线陷阱等5个关键步骤,帮助芯片设计工程师在ECO阶段大幅提升修改效率与质量,确保设计稳定签核。

d6e7f8的博客 1117

考虑风和浪的影响的旋筒帆船航线优化方法研究

针对旋筒帆船进行航线优化的实现方法,包括升阻力系数的数值模拟、升阻力系数的多元非线性回归建模、旋筒帆船6DOF摇荡运动建模分析以及考虑风、浪影响的旋筒帆船的航线优化研究。

m0_63225885的博客 1163

【Java 基础篇】Java类加载器详解

Java允许开发人员自定义类加载器,以满足特定的加载需求。自定义类加载器必须继承类,并重写findClass方法。在findClass方法中,开发人员可以根据自己的规则和逻辑来加载类的字节码。// 根据名称加载类的字节码 byte [ ] byteCode = loadClassByteCode(name);// 调用defineClass方法将字节码转换为Class对象 return defineClass(name , byteCode , 0 , byteCode . length);

繁依Fanyi的博客 1万+

枚举 ACS 电机状态位 完全解析

本文解析了ACS运动控制器SDK中的MotorStates枚举,该枚举对应控制器状态标志位?MFLAGS。主要介绍了6个核心状态:ACSC_ALL(-1)表示所有轴,ACSC_NONE(0)为空闲状态,ACSC_MST_ENABLE(1)为轴使能,ACSC_MST_INPOS(16)表示到位,ACSC_MST_MOVE(32)为运动中,ACSC_MST_ACC(64)为加速中。文章还补充了完整的枚举定义,包含报警、回零等状态,并提供了在晶圆AOI4轴运动中的典型应用场景,如判断轴状态、运动条件等。最后强调只

StevenChen的博客 246

java三种加载器_为什么Java中有三种基础的类加载器?

Java中有三种基础的类加载器 BootStrap、Extension、System他们都有一个职能,就是从不同的包中加载类。但是一个类加载器完全可以加载所有的类,为什么要有3种基础的类型的类加载器呢?最佳答案Java中有三种基础的类加载器主要为了安全。1.2版本的JVM中,只有一个类加载器,就是现在的“Bootstrap”类加载器。类加载器加载类的方式是,加载器先调用父加载器对类进行加载,如果父...

weixin_35977784的博客 301

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Java类加载器及Android类加载器基础

引子Android插件化与热更新技术日渐成熟,当你研究这些技术时会发现类加载器在其中占据重要地位。Java语言天生就有灵活性、动态性,支持运行期间动态组装程序,而这一切的基础就是类加载器。Java中的类加载器Java灵活性和动态性的原因Java源代码被编译器编译成字节码,即从.java文件编译为.class文件,而.class文件就是通过类加载器加载到虚拟机内存中的。虚拟机的类加载(Class Lo

Battling against our own ignorance 3035

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

java的 IO操作基础及类加载器

java的 IO操作基础及类加载器 java的 IO操作基础及类加载器 - jayronlou - 博客频道 - youkuaiyun.comjava的 IO操作基础及类加载器 分类: 黑马自学日记 2011-12-21 10:24 69人阅读 评论(0) 收藏 举报一...

110

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

java基础类加载器_JAVA基础_类加载器

什么是类加载器类加载器是Java语言在1.0版本就引入的。最初是为了满足JavaApplet需要。现在类加载器在Web容器和OSGI中得到了广泛的应用,一般来说,Java应用的开发人员不需要直接同类加载器进行交互。Java虚拟机默认的行为就已经足够满足大多数情况的需求了。不过如果遇到了需要与类加载器进行交互的情况,而对类加载器的机制又不是很了解的话,就很容易花大量的时候在ClassNotFound...

weixin_33978578的博客 82

java基础之—类加载器

要了解类加载器先要了解类的加载 一、类的加载(类的加载概述) 当程序要使用某个类时,如果该类还未被加载到内存中,则系统会通过加载,连接,初始化三步来实现对这个类进行初始化。 1、加载  就是指将class文件读入内存,并为之创建一个Class对象。任何类被使用时系统都会建立一个Class对象。 其中class对象也就是下一章节要将的反射的重点。 其中这个clas

敬业小码哥的博客 3923

java基础学习笔记扩展篇 - java类加载器

​如上一篇文章所说,java文件首先通过javac 变成 Hello.class 然后加载到类加载器,类加载器通过,加载、验证、准备、解析、初始化,那么这里面的步骤究竟是怎么样的呢,探究一下(大概了解即可,为以后更好的学习打下基础) 一. 什么是类加载器? Java类加载器是Java运行时环境的一部分,负责动态加载Java类到Java虚拟机的内存空间中。类通常是按需加载,即第一次使用该类时才加载。由于有了类加载器,Java运行时系统不需要知道文件与文件系统。 二.它是干什么的? 类加载器它是在.

sitingweimeng的博客 213

为什么Java中有三种基础的类加载器?

引言 Java中有三种基础的类加载器 BootStrap、Extension、System 他们都有一个职能,就是从不同的包中加载类。 但是一个类加载器完全可以加载所有的类,为什么要有3种基础的类型的类加载器呢? 最佳答案 Java中有三种基础的类加载器主要为了安全。 1.2版本的JVM中,只有一个类加载器,就是现在的“Bootstrap”类加载器。 类加载器加载类的方式是,加载器先调用父加载器对...

weixin_33912246的博客 424

Java基础:类加载器

系列阅读 Java高新技术:类加载器 Java高新技术:反射 Java高新技术:注解 Java高新技术:动态代理 概述Java虚拟机中可以安装多个类加载器,系统默认三个主要类加载器,每个类负责加载特定位置的类:BootStrap,ExtClassLoader,AppClassLoader类加载器也是Java类,因为其它java类的类加载器本身也要被类加载器加载,显然必须有第一个类加载器不是不是jav

JackChan 1133

java时间类_为什么Java中有三种基础的类加载器?

引言Java中有三种基础的类加载器 BootStrap, Extension and System他们都有一个职能,就是从不同的包中加载类。但是一个类加载器完全可以加载所有的类,为什么要有3种基础的类型的类加载器呢?最佳答案Java中有三种基础的类加载器主要为了安全。1.2版本的JVM中,只有一个类加载器,就是现在的“Bootstrap”类加载器。类加载器加载类的方式是,加载器先调用父加载器对类进...

weixin_39851008的博客 148

Java类加载器基础

  本文聊一聊类加载器的应用。我们知道,java文件经过javac指令的编译后会生成class文件,class文件经过java指令被JVM加载之后会在其内部生成描述该class文件的的Class对象。在这个过程中,java指令起的就是类加载的作用。 三种类加载器   Java中的类加载有三种,按加载顺序(指的是某class文件需要被加载时按以下顺序寻找应该加载它的加载器)如下:Bootst...

isjinhao的博客 195

【Java 基础篇】Java 类加载器详解

在Java中,类加载器是Java虚拟机(JVM)的一部分,负责加载Java类文件到内存中,以便程序可以执行这些类的代码。类加载器负责查找并加载类的二进制数据文件(通常是.class文件)。类加载器在加载类的过程中会进行链接操作,包括验证、准备和解析。类加载器会执行类的初始化操作,包括静态变量的赋值和静态代码块的执行。类加载器的主要目标是确保类的唯一性和安全性,它遵循了双亲委派模型,即先由父类加载器尝试加载类,只有在父类加载器找不到类的情况下,才由子类加载器加载。

繁依Fanyi的博客 705
上一篇: Java基础知识点__了解Class类
下一篇: Java基础知识点__获取运行时类的完整结构
Java-X
博客等级 码龄10年 4粉丝 23原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值