类加载的奥秘

一、类的加载过程将类的字节码文件加载到Java虚拟机中进行执行。
1.通过一个类的全限定名来获取定义此类的二进制流字节码文件(如zip 包、网络、运算生成、JSP 生成、数据库读取等)。
2.将这个字节流所代表的静态存储结构(如常量池、字段、方法等)转化为方法区的运行时数据结构。
3.在内存中生成一个代表这个类的 java.lang.Class 对象,作为这个类的各种数据(如字段、方法等)的访问入口。


二、数组类加载的特殊性:数组类本身不通过类加载器创建,它是由 Java 虚拟机直接创建的。但数组类与类加载器仍然有很密切的关系,因为数组类的元素类型最终是要靠类加载器去创建加载的。
数组创建过程如下:
1.如果数组的组件类型(即数组的元素类型)是引用类型,那就递归采用类加载器进行加载。
2.如果数组的组件类型(即数组的元素类型)不是引用类型,Java 虚拟机会把数组标记为引导类加载器加载。
3.数组类的可见性与它的组件类型(即数组的元素类型)的可见性一致,如果组件类型不是引用类型,那数组类的可见性将默认为 public。


三、内存中的 java.lang.Class 对象存在于方法区中,作为应用程序中访问方法区中这些类型数据的外部接口。
加载阶段与链接(验证、准备、解析)阶段的部分内容是交叉进行的,但是开始时间保持先后顺序。
 


微风不燥,阳光正好,你就像风一样经过这里,愿你停留的片刻温暖舒心。

我是程序员小迷(致力于C、C++、Java、Kotlin、Android、Shell、JavaScript、TypeScript、Python等编程技术的技巧经验分享),若作品对您有帮助,请关注、分享、点赞、收藏、在看、喜欢,您的支持是我们为您提供帮助的最大动力。

欢迎关注。助您在编程路上越走越好!

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

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

相关文章

STM32使用HAL库时 UART ErrorCode

在STM32的UART(通用异步收发传输器)通信中,ErrorCode用于指示UART通信过程中发生的错误。这些错误码通常定义在STM32 HAL(硬件抽象层)库中,以便用户能够方便地识别和处理各种通信错误。以下是一些常见的STM…

两轮自平衡小车资料(L298N 模块原理图及使用说明+c源码)

本文详细介绍了基于STM32微控制器的两轮自平衡小车的设计与实现过程。内容包括小车的硬件选型、电路设计、软件编程以及PID控制算法的应用。通过陀螺仪和加速度计获取小车的姿态信息,利用PID控制算法调整电机输出,实现小车的自主平衡。此外,还…

[图解]企业应用架构模式2024新译本讲解12-领域模型5

1 00:00:00,560 --> 00:00:04,690 刚才是往那个表里面添加数据了 2 00:00:04,700 --> 00:00:07,960 相当于,或者往这个合同里面添加数据了 3 00:00:08,430 --> 00:00:09,530 现在要查询怎么办 4 00:00:09,900 --> 00:00:10,930 跟前面一样 5 00:00:…

简单的基于threejs和BVH第一人称视角和第三人称视角控制器

渲染框架是基于THREE,碰撞检测是基于BVH。本来用的是three自带的octree结构做碰撞发现性能不太好 核心代码: import * as THREE from three import { RoundedBoxGeometry } from three/examples/jsm/geometries/RoundedBoxGeometry.js; import { MeshBVH, MeshBVHHe…

计算机系统基础笔记(12)——控制

前言 在持续输出ing 一、条件码 1.处理器状态(x86-64,部分的) 当前程序的执行信息 ◼ 临时数据 ◼ 运行时栈的位置(栈顶) ◼ 当前代码控制点的位置(即将要执行的指令地址) ◼ 最近一次指令执…

【C++关键字】auto的使用(C++11)

auto的使用(C11) auto关键字auto的使用细则auto使用场景 随着程序的复杂化,程序中用到的类型也越来越复杂化,经常体现在: 1.类型难以拼写 2.含义不明确导致容易出错 在C语言阶段处理这类问题的方法,可以使…

拉格朗日乘子将不等式约束转化为等式约束例子

拉格朗日乘子将不等式约束转化为等式约束例子 在优化问题中,常常需要将不等式约束转化为等式约束。使用拉格朗日乘子法,可以通过引入松弛变量将不等式约束转换为等式约束,然后构造拉格朗日函数进行求解。 拉格朗日乘子法简介 拉格朗日乘子法是求解带约束优化问题的一种方…

Ansible——fetch模块

目录 参数 示例1:最基本的用法 示例2:指定目标目录和主机名子目录 示例3:flat 参数设置为 yes 示例4:处理源文件不存在的情况 示例5:验证文件校验和 示例 Playbook 1. 拉取远程主机上的 syslog 文件 2. 直接…

Redis集群和高可用性:保障Redis服务的稳定性

I. 引言 A. 对Redis的简单介绍和其在现代Web应用中的角色 Redis(REmote DIctionary Server)是一个开源的、基于内存的键值数据库,它支持多种数据结构,如字符串、哈希、列表、集合、有序集合等。由于Redis的高性能和丰富的数据类型,使其在现代Web应用中广泛使用。例如,它…

【吊打面试官系列-Mysql面试题】BLOB 和 TEXT 有什么区别 ?

大家好,我是锋哥。今天分享关于 【BLOB 和 TEXT 有什么区别?】面试题,希望对大家有帮助; BLOB 和 TEXT 有什么区别 ? BLOB 是一个二进制对象,可以容纳可变数量的数据。TEXT 是一个不区分大小写的 BLOB。 1…

【调整堆】(C++ 代码实现 注释详解)

自定义结构体: #define sz 105 typedef struct node{int length;int l[sz]; }SqList; 调整堆的函数: HeapAdjust函数思路说明: //目标:将以s为根的子树调整为大根堆 //具体操作:将路径上比s大的都往上移动,s往下移…

gRPC(狂神说)

gRPC(狂神说) 视频地址:【狂神说】gRPC最新超详细版教程通俗易懂 | Go语言全栈教程_哔哩哔哩_bilibili 1、gRPC介绍 单体架构 一旦某个服务宕机,会引起整个应用不可用,隔离性差只能整体应用进行伸缩,浪…

【C++ STL】模拟实现 string

标题:【C :: STL】手撕 STL _string 水墨不写bug (图片来源于网络) C标准模板库(STL)中的string是一个可变长的字符序列,它提供了一系列操作字符串的方法和功能。 本篇文章,我们将模拟实现STL的…

ipables防火墙

一、Linux防火墙基础 Linux 的防火墙体系主要工作在网络层,针对 TCP/IP 数据包实施过滤和限制,属于典 型的包过滤防火墙(或称为网络层防火墙)。Linux 系统的防火墙体系基于内核编码实现, 具有非常稳定的性能和高效率&…

VB7/64位VB6开发工具office插件开发-twinbasic

全新的VB7,twinbasic,支持64位开发,支持EXCEL插件开发,老外连续3年闭关修练终成正果 官方最新版下载:https://github.com/twinbasic/twinbasic/releases 汉化工具用法:把工具和Lang_Tool目录复制到Twinbasi…

SAP PP学习笔记18 - MTO(Make-to-Order):按订单生产(受注生産) 的策略 20,50,74

前面几章讲了 MTS(Make-to-Stock)按库存生产的策略(10,11,30,40,70)。 SAP PP学习笔记14 - MTS(Make-to-Stock) 按库存生产(策略10),…

ChatTTS 开源文本转语音模型本地部署、API使用和搭建WebUI界面(建议收藏)

ChatTTS(Chat Text To Speech)是专为对话场景设计的文本生成语音(TTS)模型,特别适用于大型语言模型(LLM)助手的对话任务,以及诸如对话式音频和视频介绍等应用。它支持中文和英文,还可以穿插笑声、说话间的停顿、以及语…

Web前端转行简历:打造一份引人注目的职业转型之作

Web前端转行简历:打造一份引人注目的职业转型之作 在当今日新月异的科技时代,许多专业人士都面临着职业转型的挑战。对于Web前端开发者而言,转行简历的制作尤为关键,它不仅是展示自身技能和经验的重要载体,更是打开新…

力扣189. 轮转数组

给定一个整数数组 nums,将数组中的元素向右轮转 k 个位置,其中 k 是非负数。 示例 1:输入: nums [1,2,3,4,5,6,7], k 3 输出:[5,6,7,1,2,3,4] 解释: 向右轮转 1 步:[7,1,2,3,4,5,6] 向右轮转 2 步:[6,7,1,2,3,4,5] 向右轮转 3 步:[5,6,7,1,2,…

计算机网络ppt和课后题总结(下)

常用端口总结 计算机网络中,端口是TCP/IP协议的一部分,用于标识运行在同一台计算机上的不同服务。端口号是一个16位的数字,范围从0到65535。通常,0到1023的端口被称为“熟知端口”或“系统端口”,它们被保留给一些标准…