JVM类加载

一、类记载过程

1、通过类的全限定名获取存储该类的class文件

2、解析成运行时数据,即instanceKlass实例,存放到方法区

3、在堆区生成该类的class对象,即instanceMirrorKlass实例

二、将.class文件解析成什么?类的元信息在JVM中如何存储

加载成Klass,Klass分为InstanceKlass和ArrayKlass

InstanceKlass

Java类 (非数组)

InstanceMirrorKlass(镜像类)

Class对象(堆区)

InstanceRefKlass

引用

InstanceClassLoaderKlass

ArrayKlass

TypeArrayKlass:描述java中基本数据类型的数据结构

ObjectArrayKlass: 描述java中引用类型的数据结构

三、Java中的数组

1、静态数据类型 JVM中内置的八种数据类型

2、动态数据类型 运行时动态生成的

如何证明

newarray

创建一个制定原始类型(如int,float,char)的数组,并将其引用值压入栈顶

TypeArrayKlass: 基本类型的数组在JVM中的存在形式

anewarray

创建一个引用型(如类,接口,数组)的数组,并将其引用值压入栈顶

ObjArrayKlass: 引用类型的数组在JVM中的存在形式

四、何时加载

1、 new getstatic, putstatic, invokestatic

2、 反射

3、 初始化一个类的子类会去加载其父类

4、 启动类(main函数所在类)

5、 当使用idk.7动志语言支持时

相关推荐
小天源1 分钟前
Cacti在Debian/Ubuntu中安装及其使用
运维·ubuntu·debian·cacti
Trouvaille ~23 分钟前
【Linux】TCP Socket编程实战(一):API详解与单连接Echo Server
linux·运维·服务器·网络·c++·tcp/ip·socket
芷栀夏31 分钟前
深度解析 CANN 异构计算架构:基于 ACL API 的算子调用实战
运维·人工智能·开源·cann
全栈工程师修炼指南40 分钟前
Nginx | stream 四层反向代理:SSL、PREREAD 阶段模块指令浅析与实践
运维·网络·网络协议·nginx·ssl
旖旎夜光1 小时前
Linux(13)(中)
linux·网络
威迪斯特2 小时前
CentOS图形化操作界面:理论解析与实践指南
linux·运维·centos·组件·图形化·桌面·xserver
一方热衷.2 小时前
在线安装对应版本NVIDIA驱动
linux·运维·服务器
独自归家的兔2 小时前
ubuntu系统安装dbswitch教程 - 备份本地数据到远程服务器
linux·运维·ubuntu
ONE_SIX_MIX2 小时前
ubuntu 24.04 用rdp连接,桌面黑屏问题,解决
linux·运维·ubuntu
龙飞052 小时前
Systemd -systemctl - journalctl 速查表:服务管理 + 日志排障
linux·运维·前端·chrome·systemctl·journalctl