java 虚拟机中类加载器中的概念定义

类加载器:

    类加载器是一个用于加载类的对象。ClassLoader 是一个抽象类。类加载器通过给定的class 文件名,尝试进行定位或者加载生成构成定义该类的数据。通常的做法是在文件系统中将名称转化为文件名,并从文件系统中根据名称进行读取。

类的卸载:

由Java虚拟机自带的类加载器所加载的类,在虚拟机的生命周期中,始终不会被卸载。(java虚拟机自带的类加载器主要是Bootrap ClassLoder , Extension ClassLoader , Application ClassLoader)

Java 虚拟机本身会始终引用这些类加载器,而这些类加载器则会始终引用它们所加载的类的Class对象,因此这些Class对象始终是可触及的。

由用户自定义的类加载器所加载的类是可以被卸载的(当自定义类加载器的类的实例对象为null后,就可能被gc掉)。

当一个类被加载、连接和初始化后,它的生命周期就开始了。当代表这个类的Class 对象不再被引用(类的实例对象以及 类的Class 对象无引用后),即不可触及时,

类的Class 对象就会结束生命周期,该类在方法区内的数据也会被卸载,从而结束类的生命周期。

总之,一个类何时结束生命周期,取决于代表它的Class对象何时结束生命周期。

类的命名空间:

每个类加载器都有自己的命名空间,命名空间由该加载器及所有父加载器所加载的类组成。

特征:

1. 在同一个命名空间中,不会出现类的完整名字(包括类的包名)相同的两个类

2. 在不同的命名空间中,有可能会出现类的完整名字(包括类的包名)相同的两个类

发布了54 篇原创文章 · 获赞 31 · 访问量 8万+

猜你喜欢

转载自blog.csdn.net/u012149894/article/details/104956140