JVM系列(一)类加载

1 、什么是类加载

我们所开发的程序是如何被加载至jvm中运行的,将我们开发的java项目打包成jar包或者war包,实际是将.java文件编译成为.class字节码文件,然后通过类加载器加载至jvm中运行,供后续代码运行使用。

 如下图:

2 、类加载的过程

我们的代码经历了 以下五个阶段

加载 —>验证 —>准备 —>解析 —>初始化

加载阶段:当我们在代码中使用到的类就会进行加载,也就是hello.class调用user.class的时候,就会将字节码文件加载至jvm内存中。

验证阶段:进行验证我们开发的代码编译后的.class文件是否合法是否符合JVM规范,验证通过后才能交给JVM来运行

准备阶段:当字节码文件验证通过后,就会进行准备工作,给这个类    (user、hello)分配一定的内存空间,然后会给类中的变量分配内存空间,在给变量赋予初始值。

解析阶段:解析是将符号引用替换为直接引用,主要针对类或接口、对象、字段、方法进行解析。

初始化阶段:也是核心阶段, 执行准备阶段的任务,会给类变量开辟内存空间和设置初始值,这段赋值代码就是在初始化阶段来执行的。在实例化对象就会触发(实例化对象时候 会触发初始化 先初始化父类)。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 一个Java类从被加载到虚拟机内存到被卸载出内存为止,生命周期一共包括如下几个阶段: 加载(Loading) 验证...
    Lebens阅读 412评论 2 0
  • 代码编译的结果从本地机器码转变为字节码,是存储格式发展的一小步,却是编程语言发展的一大步。 前面我们学习了Clas...
    tracy_668阅读 316评论 0 0
  • 本篇将了解类加载机制和双亲委派模型这两大知识考点: 概述 类加载全过程 类加载器&双亲委派模型 1.概述 a.JV...
    厘米姑娘阅读 3,403评论 0 18
  • 当我们在Java代码中写下new String()的时候,我们理所当然认为java会返回给我们一个String对象...
    赵军林阅读 163评论 0 0
  • 1、ClassLoader Java程序并不是一个原生的可执行文件,而是由许多独立的类文件组成,每一个文件对应一个...
    冰河winner阅读 583评论 0 2

友情链接更多精彩内容