一文搞懂static二

九、类的加载与ClassLoader的理解
1、加载
将class文件字节码内容加载到内存中,并将这些静态数据转换成方法区的运行时数据结构,然后生成一个代表这个类的java.lang.class对象。

2、链接
将Java类的二进制代码合并到JVM的运行状态之中的过程。

验证:确保加载的类信息符合JVM规范,没有安全方面的问题;
准备:正式为类变量分配内存并设置类变量默认初始值的阶段,这些内存都将在方法区内进行分配;
解析:虚拟机常量池内的符号引用(常量名)替换为直接引用(地址)的过程。
3、初始化
执行类构造器()方法的过程。类构造器()方法是由编译期自动收集类中所有类变量的赋值动作和静态代码块中的语句合并产生的。(类构造器是构造类信息的,不是构造该类对象的构造器)。
当初始化一个类的时候,如果发现其父类还没有进行初始化,则需要先触发其父类的初始化。
虚拟机会保证一个类的()方法在多线程环境中被正确加锁和同步。
十、什么时候会发生类初始化
1、类的主动引用(一定会发生类的初始化)
当虚拟机启动,先初始化main方法所在的类;
new一个类的对象; 调用类的静态成员(除了final常量)和静态方法;
使用java.lang.reflect包的方法对类进行反射调用;
当初始化一个类,如果其父类没有被初始化,则先会初始化它的父类;
2、类的被动调用(不会发生类的初始化)
当访问一个静态域时,只有真正声明这个域的类才会被初始化。如:当通过子类引用父类的静态变量,不会导致子类初始化;
通过数组定义类引用,不会触发此类的初始化;
引用常量不会触发此类的初始化(常量在链接阶段就存入调用类的常量池中了);
十一、类加载器的作用
将class文件字节码内容加载到内存中,并将这些静态数据转换成方法区的运行时数据结构,然后在堆中生成一个代表这个类的java.lang.Class对象,作为方法区中类数据的访问入口。
 

尚学堂给同学们带来全新的Java300集课程啦!java零基础小白自学Java必备优质教程_手把手图解学习Java,让学习成为一种享受_哔哩哔哩_bilibili

### CPU 与 MPU 的区别及功能详解 在计算机和嵌入式系统中,**CPU**(Central Processing Unit)和 **MPU**(Micro Processor Unit)虽然名称相似,但它们在系统架构、功能和应用场景上存在显著差异。 #### CPU 的功能与特点 **CPU** 是计算机系统的核心部件,负责执行指令集,控制整个系统的运行。它主要负责处理通用计算任务,包括算术运算、逻辑运算、数据传输和程序控制等。CPU 通常包含运算器(ALU)、控制器(CU)、寄存器组和缓存等组件。在个人计算机、服务器和大型计算设备中,CPU 是主要的运算核心[^1]。 CPU 的设计目标是通用性和高性能,适用于广泛的应用场景,如桌面操作系统、服务器计算、图形渲染等。常见的 CPU 架构包括 **x86**(Intel 和 AMD)和 **ARM Cortex-A** 系列(如高通骁龙、苹果 A 系列芯片)等。 #### MPU 的功能与特点 **MPU** 是“微处理器”的缩写,通常指的是功能强大但不具备完整计算机系统所需外设的处理器芯片。MPU 本质上是一种高性能 CPU,通常用于需要复杂操作系统和大量计算能力的场景,如嵌入式 Linux 系统、工业控制、多媒体处理等。它不具备内置的 RAM、ROM 或 I/O 接口,需要外部电路来构建完整的系统[^3]。 MPU 的典型代表包括 **ARM Cortex-A** 系列(如飞思卡尔 i.MX6、全志 A20、TI AM335X)以及 **MIPS** 和 **PowerPC** 架构的一些处理器。这些芯片通常运行 Linux、Android 等操作系统,支持多任务处理和复杂的软件生态。 #### CPU 与 MPU 的主要区别 1. **应用场景**: - CPU 更多用于通用计算设备,如 PC、服务器; - MPU 常见于嵌入式系统中,用于运行操作系统和复杂应用程序。 2. **系统集成度**: - CPU 通常作为计算机系统的核心,配合芯片组(如北桥、南桥)完成系统构建; - MPU 需要外部扩展内存、存储和外设才能构成完整系统[^2]。 3. **性能与复杂度**: - CPU 通常具备更高的性能和更复杂的架构; - MPU 在性能上接近 CPU,但更注重功耗与成本的平衡。 4. **操作系统支持**: - CPU 支持完整的操作系统; - MPU 也支持操作系统,但需依赖外部硬件资源。 #### 示例代码:在嵌入式系统中使用 MPU(ARM Cortex-A53) ```c #include <stdio.h> int main() { printf("Running on ARM Cortex-A53 MPU\n"); return 0; } ``` 上述代码可以在基于 ARM Cortex-A53 的 MPU 平台上编译运行,例如运行 Linux 的嵌入式开发板(如 Raspberry Pi 3)。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值