码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • JVM加载class文件的原理简介说明


    转自:

    JVM加载class文件的原理简介说明

    下文笔者收集的JVM的类加载的简介说明,如下所示:

    JVM中类加载由类加载器(ClassLoader)和它的子类来实现的
    -------------------------------------------------------------------------------
    注意事项:
        Java中的类加载器是一个重要的Java运行时系统组件
        它的功能是在运行时查找和装入类文件中的类
    

    类读入

    我们都知道java编译后的Java源代码不是一个可执行程序,而是一个字节码文件(class文件)
    当Java程序需要使用某个类时,JVM会确保这个类已经被加载、连接(验证、准备和解析)和初始化
    ---------------------------------------------------------------------------------------------
    类加载:是指把类的.class文件中的数据读入到内存中
    如:创建一个字节数组(或map对象)读入.class文件,然后产生与所加载类对应的Class对象
    加载完成后,Class对象还不完整,所以此时的类还不可用
    当类被加载后就进入连接阶段,这一阶段包括验证、准备(为静态变量分配内存并设置默认的初始值)和解析(将符号引用替换为直接引用)三个步骤

    最后JVM对类进行初始化
    如:

    1. 当类中存在直接的父类并且这个类还没有被初始化,那么就先初始化父类
    2. 当类中存在初始化语句,就依次执行这些初始化语句

    类加载

    类加载由类加载器完成
    类加载器包括
    根加载器(BootStrap)、扩展加载器(Extension)、系统加载器(System)和用户自定义类加载器(java.lang.ClassLoader的子类)
    自JDK 1.2开始,类加载过程采取了双亲委托机制(PDM)
    PDM更好的保证了Java平台的安全性
    在该机制中,JVM自带的Bootstrap是根加载器
    其他的加载器都有且仅有一个父类加载器
    类的加载首先请求父类加载器加载,父类加载器无法加载时,则由其子类加载器自行加载

    类加载器的说明

      1. Bootstrap:一般用本地代码实现,负责加载JVM基础核心类库(rt.jar)
      2. Extension:从java.ext.dirs系统属性所指定的目录中加载类库,它的父加载器是Bootstrap
      3. System:别称应用类加载器,其父类是Extension
        它是应用最广泛的类加载器。它从环境变量classpath或者系统属性java.class.path所指定的目录中记载类,是用户自定义加载器的默认父加载器
  • 相关阅读:
    kubernetes测试部署一个nginx
    阿里云 ServerLess:Todo list 应用安装
    Spring系列-SpringMvc父子容器启动原理解析
    stm32f103vct6捕捉高低脉宽
    Spring Boot项目开发实战:手动编写一个starter实现日志埋点记录信息
    详细介绍如何使用 NeRF 进行 3D 体积渲染-附源码下载
    西浦成立产业家学院破解 “产业级” 问题!AMT企源成首批合作机构
    ET框架6.0分析三、网络通信
    科研试剂Cholesterol-PEG-Maleimide,CLS-PEG-MAL,胆固醇-聚乙二醇-马来酰亚胺
    推荐算法:是否对用户判断能力有影响!!!
  • 原文地址:https://blog.csdn.net/qq_25073223/article/details/126595815
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号