JVM的类加载过程

ops/2024/10/19 1:42:36/

1、加载

通过类的全限定名找到类的.class字节码文件,加载到方法区中。

创建java.lang.Class对象,这个对象是C++Klass的mirror,用来表示这个类在JVM中的表示。

2、链接

链接是将类的二进制数据合并到JVM中,确保类的正确性和可用性

(1)验证:确保类的字节码符合JVM规范,比如magic number:cafe babe

(2)准备:为类的静态变量分配内存(并不进行初始化赋值),静态变量此时赋默认值。

(3)解析,将符号引用转为直接引用(如果A类的常量池中有B类的引用,要解析A类,必然对B类进行了类加载)

3、初始化

执行静态代码块、静态变量赋值、初始化方法。

4、使用

5、卸载


http://www.ppmy.cn/ops/122246.html

相关文章

Golang 进阶1 —— 面向对象

Golang 进阶1 —— 面向对象 注意,该文档只适合有编程基础的同学,这里的go教程只给出有区别的知识点 go语言面向对象说明 Golang与传统的面向编程的语言有区别,并不是纯粹的面向对象编程(OOP)。所以更加准确的说法是…

Vue - 路由用法

前端路由就是URL中的hash与组件之间的对应关系。Vue Router是Vue的官方路由。 组成&#xff1a; VueRouter&#xff1a;路由器类&#xff0c;根据路由请求在路由视图中动态渲染选中的组件。<router-link>&#xff1a;请求链接组件&#xff0c;浏览器会解析成<a>。…

在JS中定义和使用Vector2

概述 Vector2是GDSCript中表示二维向量的类型&#xff0c;你会发现无论在任何编程语言中&#xff0c;只要你想很好的实现2D绘图以及几何和物理相关&#xff0c;Vector2是你必须要实现的一个类。我之前学C时就写过一个C的版本。 本篇就介绍我自己在JavaScript中定义的Vector2类…

HarmonyOS与Android在设计理念、系统架构、性能优化等方面全面对比

HarmonyOS与Android的对比相信是很多关注鸿蒙的人&#xff0c;非常关注的一个焦点话题&#xff0c;HarmonyOS并不是Android的替代品&#xff0c;HarmonyOS与Android并非同一个赛道&#xff0c;HarmonyOS目前缺乏生态支持&#xff0c;这一点远远比不上Android&#xff0c;但是Ha…

利用Spring Boot构建足球青训管理平台

2 相关技术简介 2.1 Java技术 Java是一门伟大的纯面向对象的编程语言和编程语言。同时&#xff0c;它还是Java语言从嵌入式开发到企业级开发的平台。Java凭借其一次编译&#xff0c;任何地方执行的优点&#xff0c;使得盛行的web应用程序有大量的Java编译&#xff0c;很好地支…

Swagger配置且添加小锁(asp.net)(笔记)

此博客是基于 asp.net core web api(.net core3.1)框架进行操作的。 一、安装Swagger包 在 NuGet程序包管理中安装下面的两个包&#xff1a; swagger包&#xff1a;Swashbuckle.AspNetCore swagger包过滤器&#xff1a;Swashbuckle.AspNetCore.Filters 二、swagger注册 在…

Linux 网络配置 (深入理解)

前言 前期我比较迷惑Ubuntu 的网络配置。 我接触比较多的 Linux 发行版都是 Ubuntu &#xff0c;我按照网上的一些教程配置网络发现&#xff0c;没有相关网络配置文件夹。然后我发现不是我的问题而是不同版本的配置方式和工具是不一样的。然后有些配置已经弃用了。 常见的网络…

【java】数据类型与变量以及操作符

各位看官&#xff1a;如果您觉得这篇文章对您有帮助的话 欢迎您分享给更多人哦 感谢大家的点赞收藏评论&#xff0c;感谢您的支持&#xff01;&#xff01;&#xff01; 目录 一.字面变量&#xff1a; 二&#xff1a;数据类型 1.1&#xff1a;int类型&#xff1a;&#xff0…