JVM:双亲委派(未完结)

类加载

定义

一个java文件从编写代码到最终运行,必须要经历编译和类加载的过程,如下图(图源自b站视频up主“跟着Mic学架构”)。

编译就是把.java文件变成.class文件。类加载就是把.class文件加载到JVM内存中,得到一个clss对象。使得我们可以使用new关键字来实例化这个对象。
在这里插入图片描述

具体流程

其中类加载的流程细分如下(图源自b站up主“寒食君”)。只有最开始加载步骤的读取二进制流与初始化部分可以被上层开发者控制,其余步骤都是由JVM掌握。
在这里插入图片描述

类加载器分类

类加载器的分类本身由JVM定义。各个不同的JVM的实现方式不一定一样

以下我们讨论的都是hotspot实现的JVM中的概念(图源自b站up主“寒食君”)。

hotspot中类加载器分为两种,分为启动类加载器bootstrap classloader和非启动类加载器。

  • bootstrap classloader底层是由c/cpp实现的,无法作为对象被程序引用,主要是用来加载java的核心类库。
  • 非启动类加载器底层由java实现,继承自java.lang.ClassLoader,可以作为对象被程序引用。又细分为三种类加载器。
    • Extension ClassLoader主要被用来加载java API的拓展。
    • Applicatiion ClassLoader主要被用来加载环境变量或者是系统属性指定路径下的类库。也就是上层程序员自己编写的一些代码以及一些第三方类库(所以最常用)。
    • User ClassLoader 与上述提及的只能从本地文件中获取字节码来加载的加载器不同,这个是用户自定义加载器,可以加载任意来源的字节码。

在这里插入图片描述

命名空间(未完结,待续)

https://blog.csdn.net/weixin_40575457/article/details/106100423

https://blog.csdn.net/qwlzxx/article/details/71440420

图来自
在这里插入图片描述

相关推荐

  1. JVM双亲委派模型

    2023-12-08 15:32:02       48 阅读
  2. JVM双亲委派机制

    2023-12-08 15:32:02       40 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-08 15:32:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-08 15:32:02       100 阅读
  3. 在Django里面运行非项目文件

    2023-12-08 15:32:02       82 阅读
  4. Python语言-面向对象

    2023-12-08 15:32:02       91 阅读

热门阅读

  1. 基于MATLAB车辆防碰撞系统仿真

    2023-12-08 15:32:02       48 阅读
  2. 【力扣100】4.移动零

    2023-12-08 15:32:02       60 阅读
  3. ChatGPT的进化史

    2023-12-08 15:32:02       63 阅读
  4. openmmlab加载自训练权重

    2023-12-08 15:32:02       60 阅读
  5. 利用 Python 进行数据分析实验(六)

    2023-12-08 15:32:02       51 阅读
  6. vs2022专业版永久密钥

    2023-12-08 15:32:02       60 阅读
  7. C++提高编程—01.函数模板

    2023-12-08 15:32:02       49 阅读
  8. 一篇文章了解JDK的前世今生

    2023-12-08 15:32:02       54 阅读
  9. 面试题目总结(三)

    2023-12-08 15:32:02       54 阅读
  10. 微信小程序跳转到外部小程序

    2023-12-08 15:32:02       59 阅读
  11. 12.7每日一题(备战蓝桥杯双分支、多分支)

    2023-12-08 15:32:02       39 阅读