JVM类加载子系统解毒
admin
2021-01-17 23:17:21
0

‍ 导读:“带着问题,尤其是面试问题的学习才是最高效的。加油,奥利给!”直击面试

看你简历写得熟悉JVM,那你说说类的加载过程吧?

我们可以自定义一个String类来使用吗?

什么是类加载器,类加载器有哪些?

多线程的情况下,类的加载为什么不会出现重复加载的情况?

什么是双亲委派机制?它有啥优势?可以打破这种机制吗?

JVM类加载子系统解毒

类加载子系统

JVM类加载子系统解毒

类加载机制概念

Java虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的加载机制。Class文件由类装载器装载后,在JVM中将形成一份描述Class结构的元信息对象,通过该元信息对象可以获知Class的结构信息:如构造函数,属性和方法等,Java允许用户借由这个Class相关的元信息对象间接调用Class对象的功能,这里就是我们经常能见到的Class类。类加载子系统作用

类加载子系统负责从文件系统或者网络中加载class文件,class文件在文件开头有特定的文件标识(0xCAFEBABE)

ClassLoader只负责class文件的加载。至于它是否可以运行,则由Execution Engine决定

加载的类信息存放于一块称为方法区的内存空间。除了类的信息外,方法区中还存放运行时常量池信息,可能还包括字符串字面量和数字常量(这部分常量信息是class文件中常量池部分的内存映射)

Class对象是存放在堆区的类加载器ClassLoader角色

class file存在于本地硬盘上,可以理解为设计师画在纸上的模板,而最终这个模板在执行的时候是要加载到JVM当中来根据这个文件实例化出n个一模一样的实例

class file加载到JVM中,被称为DNA元数据模板,放在方法区

在.calss文件 -> JVM -> 最终成为元数据模板,此过程就要一个运输工具(类装载器),扮演一个快递员的角色类加载过程

类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括:加载、验证、准备、解析、初始化、使用和卸载七个阶段。(验证、准备和解析又统称为连接,为了支持Java语言的运行时绑定,所以解析阶段也可以是在初始化之后进行的。以上顺序都只是说开始的顺序,实际过程中是交叉的混合式进行的,加载过程中可能就已经开始验证了)

JVM类加载子系统解毒

1. 加载(Loading):

相关内容