千家信息网

JVM中类加载机制的示例分析

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,小编给大家分享一下JVM中类加载机制的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!类的加载和卸载JVM是虚拟机的
千家信息网最后更新 2026年11月01日JVM中类加载机制的示例分析

小编给大家分享一下JVM中类加载机制的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

类的加载和卸载

JVM是虚拟机的一种,它的指令集语言是字节码,字节码构成的文件是class文件。平常我们写的Java文件,需要编译为class文件才能交给JVM运行。可以这么说:C语言代码-->二进制文件-->计算机硬件,就相当于Java代码-->字节码文件-->JVM。JVM将指定的class文件读取到内存里,并运行该class文件里的Java程序的过程,就称之为类的加载;反之,将某个class文件的运行时数据从JVM中移除的过程,就称之为类的卸载。

class文件的运行时数据就是C++对象,也称为kclass对象,这些运行时数据在JDK7之前是放在永久代(PermGen),JDK8之后则放在元空间(Metaspace)。

类的生命周期

Java类从被虚拟机加载开始,到卸载出内存为止,它的整个生命周期包括:加载(Loading)、验证(Verification)、准备(Preparation)、解析(Resolution)、初始化(Initialization)、使用(Using)和卸载(Unloading)7个阶段;其中验证、准备和解析又统称为连接(Linking)阶段。

类的加载的时机 虚拟机规范并未严格规定类加载的时机,跟具体的JVM虚拟机有关。类加载的最佳时机是解析Java字节码类文件中常量池符号的时候,Class.forName()、ClassLoader.loadClass()、反射API和JNI_FindClass都可以触发类加载,Hot JVM自身启动的时候也会触发类加载。

通过JVM参数中加 -verbose:class,可以在应用启动的时候打印类加载的过程,如下图所示: 初始化这个阶段,JVM虚拟机给出了5种必须对类进行"初始化"的情况

使用new关键字实例化对象的时候、读取或设置一个类的静态字段的时候、调用一个类的静态方法的时候;

使用java.lang.reflect包的方法对类进行反射调用的时候,如果类没有进行过初始化,则要先触发其初始化;

当初始化一个类的时候,如果发现其父类还没有被初始化,则要先初始化其父类;

当虚拟机启动时,用户需要指定一个执行的主类(包含main方法的那个类),则虚拟机会优先初始化这个主类;

在JDK1.7以后,动态语言支持的时候,如果一个java.lang.invoke.MethodHandle实例最后的结果是要执行第1种情况的操作,则也要进行初始化。 类的卸载时机 类的卸载跟采用的垃圾收集算法有关,在CMS中有两种方法卸载不必要的类,一种是等到元空间(Metaspace)满了的时候触发FGC,另一种是使用跟CMS并发收集算法类似的方式,不过对于元空间的阈值和触发CMS并发收集的阈值是独立的。更具体的可以参考之前的文章:CMS学习笔记。在这里,我们只需要记住,JVM中一个类的卸载要满足下面这3个条件:

该类所有的实例对象都已被回收;

该类的类加载器对象已经被回收;

该类对应的java.lang.Class对象没有在任何地方被引用,无法在任何地方通过反射访问该类的方法。

类加载器的作用 类的加载是需要类加载器完成的,但是类加载器在JVM中的作用可不止这些。在JVM中,一个类的唯一性是需要这个类本身和类加载一起才能确定的,每个类加载器都有一个独立的命名空间。

不同的类加载器,即使是同一个类字节码文件,最后再JVM里的类对象也不是同一个,下面的代码展示了这个结论:

可以看出,代码中使用自定义类加载器(myLoader)加载的jvm.ClassLoaderTest类和通过应用程序类加载器加载的类不是同一个类。综上,类加载器在JVM中的作用有:

  1. 将类的字节码文件从JVM外部加载到内存中

  2. 确定一个类的唯一性

  3. 提供隔离特性,为中间件开发者提供便利,例如Tomcat

以上是"JVM中类加载机制的示例分析"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

文件 时候 对象 字节 方法 运行 代码 时机 空间 作用 内存 实例 数据 篇文章 语言 过程 阶段 反射 机制 示例 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 重生之互联网科技帝国 深圳恒合互联网络科技有限公司 科技互联网公司装修 河南真二互联网科技有限公司 广西互联网科技公司 互联网科技类展会 深圳卡尔迅互联网科技有限公司怎么样 青岛中康互联网医疗科技有限公司 济南华为互联网科技产业总部基地 互联网科技中介 智腾互联网科技有限公司 未来五年的互联网科技 互联网科技扶贫时间 科技类公司包括互联网吗 乌鲁木齐新华智原互联网科技学校 翼展科技 首家互联网医院 伊宁互联网科技做什么的 上海科技产业互联网平台 中国新注册互联网科技 湖北辰鑫科技互联网 互联网加科技 互联网科技金融 广州善班互联网科技 盛创互联网科技有限公司 哈尔滨新华互联网科技 互联网与医疗科技 雨阳互联网卡科技有限公司 皮皮虾互联网科技有限公司 互联网科技对化妆品行业 互联网企业和网络科技有限公司
0