首页 > 编程语言 >Java--类加载器

Java--类加载器

时间:2023-08-16 15:05:06浏览次数:29  
标签:初始化 Java 字节 -- ClassLoader JVM 加载

Java类加载器(ClassLoader)是Java虚拟机(JVM)的一个重要组成部分,负责将Java类从.class文件加载到内存中并进行链接、初始化等操作,使得Java程序能够运行。

类加载器的种类及作用

Bootstrap ClassLoader

启动类加载器,是JVM的一部分,用来加载 Java 核心类库,例如 rt.jar 等.

Extension ClassLoader

扩展类加载器,用于加载 Java 扩展类库,例如 jre/lib/ext 目录下的 jar 包

Application ClassLoader

应用程序类加载器,负责加载应用程序 classpath 下的类

自定义类加载器

开发者可以通过继承 ClassLoader 类来实现自定义的类加载器,从而实现一些特定的加载逻辑.

类加载器的本质

类加载器的本质是一个 java 类,继承自 java.lang.ClassLoader,可以通过继承和重写 java.lang.ClassLoader 类的方法来实现自定义的类加载器。 类加载器是 JVM 的一部分,负责将类的字节码文件加载到 JVM 中。 那么它是如何工作的呢?

类加载过程

  1. 加载
  1. 类加载器通过类的全限定名来读取对应的字节码文件,并将字节码转化为JVM中的Class对象.
  1. 链接 --> 链接分为三个阶段,分别是 验证、准备和解析
  1. 验证:验证字节码文件是否符合JVM规范
  2. 准备:为类的静态变量分配内存,并设置默认值
  3. 解析:将符号引用转化为直接引用,例如字段或者方法的符号转化为对应的内存地址
  1. 初始化
  1. 在初始化阶段会执行类的静态代码块,例如初始化静态变量和执行静态方法等
  1. 使用
  1. 在该阶段,类已经被完全加载到JVM中了,并可以进行相应的操作,例如创建对象,调用方法等。

双亲委派机制

Java 类加载器采用双亲委派模型来实现类的加载。即当一个类需要被加载时,先委托给父类加载器进行加载,如果父类加载器无法完成加载任务,则交给子类加载器进行加载。这样可以保证类的唯一性和安全性。

标签:初始化,Java,字节,--,ClassLoader,JVM,加载
From: https://blog.51cto.com/u_16079703/7108052

相关文章

  • 重新定义零售:人工智能如何打造您的完美购物狂潮。
    电子商务从根本上改变了我们的购物方式,将整个世界变成了一个全球市场。只需点击几下,我们就可以选择、购买和安排将产品从千里之外送到我们家门口。然而,当前电子商务领域的活力和效率不仅仅是由于互联网或移动设备,而是由人工智能(AI)领导的无声数字革命。静态在线目录和一刀切的产......
  • 企业数字化转型,财务规划与分析(FP&A)团队应该如何应对?
    近年来,企业业务的各个方面都在朝着数字化的方向快速转型。随着越来越多的企业开始使用数字技术,财务规划与分析(FP&A)团队也必须适应新的技术和工具以跟得上不断变化的商业环境,以保持在市场中的领先地位。不得不承认,随着企业数字化的转型,FP&A的角色发生了重大转变,由关注传统的财务报告......
  • 【专题】先立后破,迈向零碳电力-探索适合中国国情的新型电力系统实现报告PDF合集分享(附
    原文链接:https://tecdat.cn/?p=33446报告合集根据实践创新,我们提出了“云上新型电力系统”,该系统将加速电力流、信息流和价值流的融通流动,通过更灵活高效的能源资源优化配置平台,支持大规模的新能源开发和利用。这一系统将为电力业务创新、电力行业发展以及全社会的绿色生产和生活......
  • 08.25北京站|阿里云Serverless 技术实践营( AI 专场)开放报名
    活动简介阿里云Serverless技术实践营(AI专场)是一场以聚焦企业级AIGC应用开发与落地展开的主题活动,活动受众以关注Serverless和AI技术的开发者、企业决策人、云原生领域创业者为主,活动形式为演讲、动手场景实操,让开发者通过一个下午的时间增进对Serverless技术的理解,快速......
  • ThingsKit物联网平台意见反馈(管理员)
    概述用于接收移动端的用户需求反馈,默认只有超级管理员才有权限操作。:::warning......
  • ITK 实例10 边缘保留平滑滤波对PNG图像进行二维滤波
    1#include"itkImage.h"2#include"itkCastImageFilter.h"3#include"itkCurvatureFlowImageFilter.h"4#include"itkImageFileReader.h"5#include"itkImageFileWriter.h"67intmain(intargc,char......
  • 踏上 AI 学习之旅:掌握人工智能的 4 个步骤
    人工智能(AI)已成为一种变革力量,正在重塑行业并改善我们生活的各个方面。鉴于人工智能的复杂性和快速发展,学习人工智能似乎是一项艰巨的任务。然而,通过正确的方法和奉献精神,任何人都可以踏上成功的人工智能学习之旅。在本文中,我们将概述四个基本步骤,以帮助您掌握AI的基础知识,并让......
  • Apche Kafka + Spring的消息监听容器
    (目录)一、消息的接收消息的接收:可以通过配置MessageListenerContainer并提供消息侦听器或使用@KafkaListener注释来接收消息。本章我们主要说明通过配置MessageListenerContainer并提供消息侦听器的方式接收消息。1.1、消息监听器当使用消息监听容器时,就必须提供一个监听器......
  • ThingsKit物联网平台平台通知管理之发送通知管理
    在ThingsKit物联网平台内部向自己管理的用户发送平台通知。新增点击新增通知,填入想要发送的通知基本信息,确认。通知管理参数参数说明类型类型选择公告、会议、其他必选||标题|通知消息标题定义支持输入的格式:中英文、字符、数字支持输入的长度限制:36个......
  • 【专题】电力系统灵活性提升:技术路径、经济性与政策建议报告PDF合集分享(附原数据表)
    原文链接:https://tecdat.cn/?p=33446报告合集根据实践创新,我们提出了“云上新型电力系统”,该系统将加速电力流、信息流和价值流的融通流动,通过更灵活高效的能源资源优化配置平台,支持大规模的新能源开发和利用。这一系统将为电力业务创新、电力行业发展以及全社会的绿色生产和生活......