Java类加载过程及双亲委派原则

news/发布时间2024/6/16 19:02:55

Java类加载过程:

  1. 加载(Loading):当Java程序运行时,需要使用某个类时,Java虚拟机(JVM)会尝试加载这个类。加载的过程包括通过类的全限定名(Fully Qualified Name)找到对应的.class文件,并将其读入内存。

  2. 链接(Linking):在链接阶段,会将类的二进制数据合并到JVM的运行状态之中。链接阶段包括三个阶段:

    • 验证(Verification):确保加载的类符合Java虚拟机规范,不会损害虚拟机的安全性。
    • 准备(Preparation):为类的静态变量分配内存空间,并设置默认初始值。
    • 解析(Resolution):将类、接口、字段和方法的符号引用解析为直接引用。
  3. 初始化(Initialization):在初始化阶段,会执行类构造器()方法,这是编译器自动收集类中所有类变量的赋值动作和静态代码块中的语句合并产生的。

双亲委派原则:

双亲委派原则是Java类加载机制的一个重要概念,其核心思想是父类加载器委托给子类加载器加载类,如果父类加载器加载失败,则交给子类加载器来尝试加载。这种机制保证了类的唯一性和一致性,避免了类的重复加载。

  1. 工作原理:当一个类加载器收到类加载请求时,它会先检查是否已经加载了该类,如果没有,则将加载请求委派给父类加载器。父类加载器按照同样的规则继续向上委托,直至顶层的启动类加载器(Bootstrap Class Loader)。如果父类加载器无法加载,则子类加载器尝试加载。

  2. 优势:双亲委派机制避免了类的重复加载,确保了类的一致性和唯一性。同时,它也保证了Java核心类库的安全性,防止用户自定义的类替代核心类库,从而提高了系统的稳定性和安全性。

理解Java类加载过程和双亲委派原则有助于更好地理解Java程序的运行机制,以及保障了Java安全性和稳定性的核心设计。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.bcls.cn/cbbp/5471.shtml

如若内容造成侵权/违法违规/事实不符,请联系编程老四网进行投诉反馈email:xxxxxxxx@qq.com,一经查实,立即删除!

相关文章

[electron]官方示例解析

官方例子 github链接 main.js const { app, BrowserWindow } require(electron)说句实话这里的语法是有部分看不懂的。导入模块虽然electron有很多模块。但是这里只是用到了app 和 BrowserWindow function createWindow () {// Create the browser window.const mainWindo…

ESP32(VSCode+PlatformIO)开发环境搭建教程(2024版)

目录 一、安装vscode:[点击下载](https://code.visualstudio.com/Download)二、安装Python环境三、安装VSCode platformio插件四、使用PlatformIO创建项目五、编译下载 一、安装vscode:点击下载 二、安装Python环境 本文以Win11系统做演示,其…

【踩坑】修复报错 recursion is detected during loading of “cv2“ binary extensions

转载请注明出处:小锋学长生活大爆炸[xfxuezhang.cn] 报错如下: 修复方法一: pip install pyinstaller5.9 修复方法二: pip install opencv-python4.5.3.56

数字化转型导师坚鹏:政府数字化转型智慧城市类案例研究

政府数字化转型智慧城市类案例研究 课程背景: 很多地方政府存在以下问题: 不清楚政府数字化转型的智慧城市类成功案例 不清楚政府数字化转型的城市大脑类成功案例 不清楚政府数字化转型的综合实践类成功案例 课程特色: 针对性强 …

安装淘宝镜像cnpm报错

npm 安装淘宝镜像报错 npm install -g cnpm --registryhttps://registry.npm.taobao.org 安装报 The operation was rejected by your operating system. npm ERR! Its possible that the file was already in use (by a text editor or antivirus), npm ERR! or that you la…

华为配置CAPWAP双栈覆盖业务示例

配置CAPWAP双栈覆盖业务示例 组网图形 图1 配置CAPWAP双栈覆盖业务示例组网图 业务需求组网需求数据规划配置思路配置注意事项操作步骤配置文件 业务需求 企业用户接入WLAN网络,以满足移动办公的最基本需求。且在覆盖区域内移动发生漫游时,不影响用户的业…

合并spark structured streaming处理流式数据产生的小文件

备注: By 远方时光原创,可转载,不能复制到其他平台 背景:做流批一体,湖仓一体的大数据架构,常见的做法就是 数据源->spark Streaming->ODS(数据湖)->spark streaming->…

springmvc基于springboot 的音乐播放系统 _7sdu8

这就意味着音乐播放系统的设计可以比其他系统更为出色的能力,可以更高效的完成最新的ymj排行榜、ymj音乐资讯等功能。 此系统设计主要采用的是JAVA语言来进行开发,JSP技术、采用SSM框架技术,框架分为三层,分别是控制层Controller&…

Django学习笔记-ModelForm使用(完全依赖)

1.创建模型 ,code,name,sex,entrydate 2.模型映射 python manage.py makemigrations myapp01,python manage.py migrate 3.创建模型表单,继承forms.ModelForm,Meta:元数据,models需引入,fields填写引用的模型变量 4.创建testModelForm.html,添加urls 5.views编写testmodelfo…

Qt RGB三色灯上位机

今天突发奇想做一个Qt RGB三色灯上位机,刚好手上有一个RGB三色灯和arduion开发板。 我是想实现一个颜色选择器界面然后鼠标点击颜色区域就可以发出rgb的值,然后把这个值通过串口线发送给arduion,arduion再解析出数据发送给RGB三色灯。 实现界面如下&…

C#,计算几何,计算机图形学(Computer Graphics)洪水填充算法(Flood Fill Algorithm)与源代码

1 泛洪填充算法(Flood Fill Algorithm) 泛洪填充算法(Flood Fill Algorithm) ,又称洪水填充算法,是在很多图形绘制软件中常用的填充算法,最熟悉不过就是 windows 自带画图软件的油漆桶功能。 2 源程序 using System; using System.Collecti…

Python2.0与Python3.0的区别

1. Python3 对 Unicode 字符的原生支持。 Python2 中使用 ASCII 码作为默认编码方式导致 string 有两种类型 str 和 unicode,Python3 只 支持 unicode 的 string。Python2 和 Python3 字节和字符对应关系为: 2. Python3 采用的是绝对路径的方式进行 i…

微信小程序简单输入框布局(合并忘记密码和修改页面)

微信小程序简单入门级输入框布局,将忘记密码和修改页面合并到一个页面,根据传入的参数自动切换显示的界面信息。 上代码 1、js代码: Page({/*** 页面的初始数据*/data: {current: 0,},/*** 生命周期函数--监听页面加载*/onLoad(options) {//…

vue项目打包获取git commit信息并输出到打包后的指定文件夹中

需求背景: 前端项目经常打包,发包部署,为了方便测试及运维发现问题时与正确commit信息对比 实现方式: 使用Node.js的child_process模块来执行git命令 实现步骤: 1.在package.json的同级目录下新建一个version.js文件。…

使用autotools自动生成Makefile

autotools可以根据环境变量自动切换编译编译平台, 生成针对目标平台的软件或库。 它是在在Makefile的基础上进行了一些列的自动化构建。 开发者需要编辑的只有源代码的编译选项及依赖关系。 生成Makefile大致流程如下 安装autotools所有工具 sudo apt-get install…

matlab采用不同数值方法求解微分方程

1、内容简介 略 60-可以交流、咨询、答疑 欧拉方法、改进欧拉、RK4、米尔斯坦方法求解微分方程 2、内容说明 略 lc; close all; clear all; % 参数赋值 global a global b global h a 1; b 2; Ni 1000; % 总步数 h 0.001; % 步长Xt1(1:Ni) 0; Xt2(…

手机如何使用NFC卡模拟门禁刷卡

部分手机具备NFC卡刷卡功能,理论上也可模拟门禁卡。 一个功能强大且免费的NFC卡模拟器,可模拟各类门禁卡、电梯卡、部分公司(工厂)工卡或饭卡、部分学校饭卡、部分图书馆借书卡等各类IC卡,用手机替代卡片去刷门禁、刷…

基于事件触发机制的孤岛微电网二次电压与频率协同控制MATLAB仿真模型

微❤关注“电气仔推送”获得资料(专享优惠) 本模型质量非常高,运行效果完美。本模型为4机并联孤岛系统,在下垂控制的基础上加入二次控制,二次电压与频率协同控制策略利用事件触发的方法来减少控制器的更新次数。该方法…

浅浅的画一个STDP的图像吧

stdp最重要的是两个窗口函数 根据这个方程我们刻画出他的轨迹,代码如下 import numpy as np import matplotlib.pyplot as plt# 定义STDP参数 tau_pos 30 # 正向突触权重变化的时间常数 tau_neg 30 # 负向突触权重变化的时间常数 A_pos 0.1 # 正向突触权重变…

PDF控件Spire.PDF for .NET【安全】演示:从加密的 PDF 文档中删除密码

Spire.PDF for .NET 是一款独立 PDF 控件,用于 .NET 程序中创建、编辑和操作 PDF 文档。使用 Spire.PDF 类库,开发人员可以新建一个 PDF 文档或者对现有的 PDF 文档进行处理,且无需安装 Adobe Acrobat。 E-iceblue 功能类库Spire 系列文档处…
推荐文章