Java虚拟机笔记 - JVM 类的卸载

发布于 2011-11-05 | 更新于 2020-09-20

类的卸载:

当Sample类被加载、连接和初始化后,它的生命周期就开始了。当代表Sample类的Class对象不再被引用,即不可触及时,Class对象就会结束生命周期,Sample类在方法区内德数据也会被卸载,从而结束Sample类的生命周期。因此,一个类何时结束生命周期,取决于代表它的Class对象何时结束生命周期。

由Java虚拟机自带的类加载器所加载的类,在虚拟机的生命周期中,始终不会被卸载。Java虚拟机自带的类加载器包括根类加载器、扩展类加载器和系统类加载器。Java虚拟机本身会使用这些类加载器,而这些类加载器则会始终引用它们所加载的类的Class对象,因此这些Class对象始终是可以触及的。

用户自定义的类加载器所加载的类是可以被卸载的。

在类加载器的内部实现中,用一个Java集合来存放所加载类的引用。一个Class对象总是会引用它的类加载器,调用Class对象的getClassLoader()方法,就能获得它的类加载器。

一个类的实例总是引用代表这个类的Class对象。在Object类中定义了getClass()方法,这个方法返回代表对象所属类的Class对象的引用。此外,所有的Java类都有一个静态属性class,它引用代表这个类的的Class对象。

本文作者: arthinking

本文链接: https://www.itzhai.comjava-virtual-machine-notes-jvm-unload-a-class.html

版权声明: 版权归作者所有,未经许可不得转载,侵权必究!联系作者请加公众号。

×
IT宅

关注公众号及时获取网站内容更新。

请帅旋喝一杯咖啡

咖啡=电量,给帅旋充杯咖啡,他会满电写代码!

IT宅

关注公众号及时获取网站内容更新。