www.8029.com-首页

教育行业A股IPO第一股(股票代码 003032)

全国咨询/投诉热线:400-618-4000

传智教育|传智播客

一样的教育,不一样的品质

全国校区

 

类的加载机制是什么?【Java面试题】

更新时间:2021年06月21日10时08分 来源:传智教育 浏览次数:

传智教育-一样的教育,不一样的品质

(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的子类)。 

(4)结合项目中的使用





猜你喜欢:

使用static关键字如何定义成员变量?

JVM将内存空间划分为几种?【Java面试题】

JVM对Java的原生锁做了哪些优化?

传智教育Java高级App工程师培训

www.8029.com|www.8029.com

XML 地图 | Sitemap 地图