课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
类加载是程序员在学习Java编程语言的时候需要重点掌握的一个编程知识,而今天我们就通过案例分析来了解一下,类加载的步骤包含哪些内容。
1、加载
类加载阶段是将字节码文件.Class的二进制数据读入内存中的方法区中,然后在堆中创建一个Java.lang.Class对象,对于加载阶段的任意一个类都对应着一个Class类型的对象,可以通过getClass()来获取。对于确定的类Class,无论该类生成多少个对象,其Class类型的对象只有一个,Class类是整个反射的入口。
2、验证
验证是连接阶段的一步,其目的是为了确保Class文件内的字节流包含的信息符是否符合Java虚拟机规范的要求,保证输入的字节流不会危害到虚拟机自身的安全。我们也许会有疑问,我们印象中的Java语言是一门相对安全的语言啊(相比较于C++),如单纯的使用Java代码是无法访问到边界以外的数据,如果我们非要这么做,编译器就会拒绝编译。
3、准备
准备阶段是正式为类变量分配内存并设置类变量初始值的阶段,这些变量所使用的内存都将在方法区中进行分配。这时候进行内存分配的仅包括类变量(被static修饰的变量),而不包括实例变量,实例变量将会在对象实例化时随着对象一起分配在Java堆中。这里所说的初始值“通常情况”下是数据类型的零值。
4、解析
解析阶段就是将Class中的常量池中的符号引用解析为直接引用。符号引是使用一组符号描述被引用的目标,引用的目标不一定加载到内存中;直接引用可以使直接指向目标地址的指针,相对偏移量或者间接定位到目标的句柄,有了直接引用,引用的目标一定存在在虚拟机中。主要包括四种类型引用的解析,分别是类或接口解析、字段解析、方法解析和接口方法解析。
【免责声明】本文系本网编辑部分转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与管理员联系,我们会予以更改或删除相关文章,以保证您的权益!更多内容请在707945861群中学习了解。