当前位置: 首页 > article >正文

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

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


http://www.kler.cn/a/157365.html

相关文章:

  • 人脸生成3d模型 Era3D
  • (Z Shell)zsh: no matches found: ? 使用单引号包裹
  • CMake的INSTALL FILES和INSTALL DIRECTORY有什么区别
  • 基于微信小程序的乡村旅游系统
  • 堆【Lecode_HOT100】
  • 【线性代数】理解矩阵乘法的意义(点乘)
  • 在文本框中添加单位
  • 【ARM CoreLink 系列 8.2 -- SMMU 详细介绍-STE Entry 详细介绍 2】
  • 振动和震动的区别?
  • GPIO的使用--点亮外接小灯泡--开关控制
  • 鸿蒙原生应用/元服务开发-AGC分发如何下载管理Profile
  • Django二转day01
  • 【前端】多线程 worker
  • 解决msvcp140.dll丢失问题的5种方法,验证有效
  • Linux Namespace技术
  • C#图像处理OpenCV开发指南(CVStar,04)——图片像素访问与多种局部放大效果的实现代码
  • TensorRT-LLM保姆级教程(一)-快速入门
  • 价差后的几种方向,澳福如何操作才能盈利
  • web自动化 -- pyppeteer
  • 计算机网络(二)| 物理层上 | 数据通信基础知识 调制 频率范围 信噪比
  • 数据结构与算法(四)分治算法(Java)
  • Python 3 读写 json 文件
  • 小程序长按识别二维码
  • UE中C++创建对象方法不完全汇总
  • gitlab高级功能之CI/CD组件 - 实践(二)
  • Android Framework 电池提醒相关Dialog熄屏消失的问题