Java类加载过程是什么

发布时间:2020-10-28 15:00:44 作者:小新
来源:亿速云 阅读:156

这篇文章主要介绍了Java类加载过程是什么,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获。下面让小编带着大家一起了解一下。

Java文件从编码到完成最终执行的过程:

  1. 编译:Javac 把Java文件编译成.class文件
  2. 运行:把.class文件交给JVM运行

类的加载过程

JVM虚拟机把.class文件中类信息加载进内存,并进行解析生成对应的class对象的过程。JVM不是一开始就把所有的类都加载进内存中,而是只有第一次遇到某个需要运行的类时才会加载,且只加载一次。

Java类加载过程是什么

加载

把class字节码文件从各个来源通过类加载器装载入内存中
JVM要完成三件事

  1. 通过一个类的全限定名来获取定义此类的二进制字节流。
  2. 静态存储结构- > 方法区的运行时数据结构
  3. 在Java堆中生成对应类的java.lang.Class对象,作为方法区访问这些数据的访问入口。

类加载器

连接

将java类的二进制代码合并到JVM的运行状态之中的过程

验证

保证加载进来的字节流符合虚拟机规范,不会造成安全错误

验证分类

准备

为类变量(注意,不是实例变量)分配内存,并且赋予初值(Java虚拟机根据不同变量类型的默认初始值)

默认初始值

解析

常量池内的符号引用替换为直接引用的过程

符号引用:一个字符串,但是这个字符串给出了一些能够唯一性识别一个方法,一个变量,一个类的相关信息

直接引用:可以理解为一个内存地址,或者一个偏移量

举个例子来说,现在调用方法hello(),这个方法的地址是1234567,那么hello就是符号引用,1234567就是直接引用

解析阶段,虚拟机会把所有的类名,方法名,字段名这些符号引用替换为具体的内存地址或偏移量,也就是直接引用

初始化

对类变量(static修饰的变量或语句)初始化,是执行类构造器的过程

初始化过程

感谢你能够认真阅读完这篇文章,希望小编分享Java类加载过程是什么内容对大家有帮助,同时也希望大家多多支持亿速云,关注亿速云行业资讯频道,遇到问题就找亿速云,详细的解决方法等着你来学习!

推荐阅读:
  1. java 类加载过程图
  2. java JVM类加载过程图

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

java ava

上一篇:Antd使用table组件实现表格序号自增

下一篇:java中IO流对文件操作的案例

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》