【Java面试题】类的加载过程是什么?

发布时间:2021-12-17 09:51:43

  今后为图灵学员提供更多的就业指导和研究资料,小编整理了很多关于java程序员面试的话题。此时您还没有换工作的打算,也可以通过面试题目了解目前企业所关注的内容从而查漏补缺,为将来“跳槽”做好准备。在这一节中Java程序员面的题目是:类的装入过程。

面向对象

  类装入过程主要包括装入、验证、准备、解析、初始化、使用和卸载七个方面。

  一,装载。

  装入阶段,虚拟机主要完成三件事情:

  1.根据类的全限名称获得定义此类的二进制字节流

  2.将此字节流表示的静态存储结构转换成方法区域的运行时数据结构

  3.在Java堆中生成代表该类的java.lang.Class对象,以此作为方法区域数据的访问入口。

  二,确认。

  校验阶段的任务是确保Class文件的字节流包含符合JVM规范的信息,并且不会损害JVM。如果验证失败,则抛出一个java.lang.VerifyError异常或者它的子类异常。确认过程分为四个阶段:

  1.文件格式化验证:验证字节流文件是否符合Class文件格式的规范,当前虚拟机可以正确地处理它。

  2.Metadata验证:是对字节码所述信息进行语义分析,以确保所描述的信息符合Java语言的规格。

  3.字节码验证:主要分析数据流和控制流,确保校验类的方法在运行时不会危及虚拟机。

  4.符号引用验证:当虚拟机将符号引用转换成直接引用时,就会在解析阶段进行此转换操作。

  三,准备。

  预备阶段分配变量的内存,并设置类变量的初始化。这一阶段分配的只是类的变量(static修改过的变量),没有包含类的实例变量。对于非final变量,JVM会将该变量设置为“零值”,而非其赋值语句的值:

  pirvatestaticintsize=12;

  因此,size的值是0,而不是12。final修饰过的类变量会被赋为真正的值。

  四,分析。

  分析过程是将常量池中的符号引用替换为直接引用。首先分析四类引用类型。解析类或接口,字段解析,方法解析,接口方法解析。

  五,初始化。

  在预备阶段,类变量一次就被初始化了,在这一阶段,就是根据程序开发的程序来初始化类的变量和其它资源。这是static{}块、构造函数、父类的初始化等等。

  对于使用阶段和卸载阶段,这里不再多说了,使用过程是按照程序定义的行为来执行,由GC进行卸载。

  您熟悉类的装入程序吗?类别是OOP的一个重要概念。无论是学习java,PHP,python,都需要掌握面向对象编程的方法。在某种程度上,各种编程语言之间存在着某种差异。应该更加注意基础概念和原则。这篇文章的一部分来自网络,仅供参考。

上一篇 【Java面试题】Object类中的Hashcode和equals是有区别的
下一篇 【Java面试题】经典Java面试题分享
标签: