python

当前位置:首页 > IT面试题 > 当前文章

IT面试题

Java面试 :类的加载机制是什么?

2021-09-26 57赞 老董笔记
每篇文章努力于解决一个问题!更多精品可移步文章底部。

  Java面试 :类的加载机制是什么?

  (1)问题分析:

  Class文件由类装载器装载后,在JVM中将形成一份描述Class结构的元信息对象,通过该元信息对象可以获知Class的结构信息:如构造函数,属性和方法等,Java允许用户借由这个Class相关的元信息对象间接调用Class对象的功能。

  虚拟机把描述类的数据从class文件加载到内存,并对数据进行校验,转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制。

  (2)核心答案讲解:

  类装载器就是寻找类的字节码文件,并构造出类在JVM内部表示的对象组件。在Java中,类装载器把一个类装入JVM中,要经过以下步骤:

  1)装载:查找和导入Class文件;

  2)链接:把类的二进制数据合并到JRE中;

  A)校验:检查载入Class文件数据的正确性;

  B)准备:给类的静态变量分配存储空间;

  C)解析:将符号引用转成直接引用;

  3)初始化:对类的静态变量,静态代码块执行初始化操作

  Java程序可以动态扩展是由运行期动态加载和动态链接实现的;比如:如果编写一个使用接口的应用程序,可以等到运行时再指定其实际的实现(多态),解析过程有时候还可以在初始化之后执行;比如:动态绑定(多态)。

  (3)问题扩展

  由于Java的跨平台性,经过编译的Java源程序并不是一个可执行程序,而是一个或多个类文件。当Java程序需要使用某个类时,JVM会确保这个类已经被加载、连接(验证、准备和解析)和初始化。类的加载是指把类的.class文件中的数据读入到内存中,通常是创建一个字节数组读入.class文件,然后产生与所加载类对应的Class对象。加载完成后,Class对象还不完整,所以此时的类还不可用。当类被加载后就进入连接阶段,这一阶段包括验证、准备(为静态变量分配内存并设置默认的初始值)和解析(将符号引用替换为直接引用)三个步骤。最后JVM对类进行初始化,包括:1)如果类存在直接的父类并且这个类还没有被初始化,那么就先初始化父类;2)如果类中存在初始化语句,就依次执行这些初始化语句。

  类的加载是由类加载器完成的,类加载器包括:根加载器(BootStrap)、扩展加载器(Extension)、系统加载器(System)和用户自定义类加载器(Java.lang.ClassLoader的子类)。

文章评论

Java面试 :类的加载机制是什么?文章写得不错,值得赞赏