本篇文章给大家带来的内容是关于Java类加载过程的详细介绍,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
Java文件从编码到完成最终执行的过程:
JVM虚拟机把.class文件中类信息加载进内存,并进行解析生成对应的class对象的过程。JVM不是一开始就把所有的类都加载进内存中,而是只有第一次遇到某个需要运行的类时才会加载,且只加载一次。
把class字节码文件从各个来源通过类加载器装载入内存中
JVM要完成三件事
类加载器
将java类的二进制代码合并到JVM的运行状态之中的过程
保证加载进来的字节流符合虚拟机规范,不会造成安全错误
验证分类
为类变量(注意,不是实例变量)分配内存,并且赋予初值(Java虚拟机根据不同变量类型的默认初始值)
默认初始值
常量池内的符号引用替换为直接引用的过程
符号引用:一个字符串,但是这个字符串给出了一些能够唯一性识别一个方法,一个变量,一个类的相关信息
直接引用:可以理解为一个内存地址,或者一个偏移量
举个例子来说,现在调用方法hello(),这个方法的地址是1234567,那么hello就是符号引用,1234567就是直接引用
解析阶段,虚拟机会把所有的类名,方法名,字段名这些符号引用替换为具体的内存地址或偏移量,也就是直接引用
对类变量(static修饰的变量或语句)初始化,是执行类构造器的过程
初始化过程
以上是Java类加载过程的详细介绍的详细内容。更多信息请关注PHP中文网其他相关文章!