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

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.lryc.cn/news/252488.html

相关文章:

  • Leetcode 2661. 找出叠涂元素
  • vscode代码调试配置
  • PTA 7-225 sdut-C语言实验- 冒泡排序中数据交换的次数
  • 新的 BLUFFS 攻击导致蓝牙连接不再私密
  • 安全测试之推荐工具(一)
  • final关键字
  • WPF MVVM模式下如何将UI窗口变量传参到Viewmodel层
  • 条款22:将成员变量声明为private
  • PTA 7-224 sdut-C语言实验-排序问题
  • 【JavaScript】3.2 JavaScript性能优化
  • pytorch bert实现文本分类
  • 《开箱元宇宙》:Madballs 解锁炫酷新境界,人物化身系列大卖
  • 4K-Resolution Photo Exposure Correction at 125 FPS with ~8K Parameters
  • 网络初识:局域网广域网网络通信基础
  • JVM之jps虚拟机进程状态工具
  • C++实现顺序栈的基本操作(扩展)
  • 用python写一个简单的爬虫
  • 分布式追踪
  • make -c VS make -f
  • Unity 代码控制Color无变化
  • 【Erlang进阶学习】2、匿名函数
  • 肖sir__mysql之视图__009
  • FPGA falsh相关知识总结
  • 升辉清洁IPO:广东清洁服务“一哥”还需要讲好全国化的故事
  • Python自动化办公:PDF文件的分割与合并
  • 破解app思路
  • 背景特效插件:Background Effects
  • 36.位运算符
  • C#异常处理-throw语句
  • PlantUML语法(全)及使用教程-时序图