栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java类加载器

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java类加载器

一  什么是类加载

          JVM将 class字节码 文件加载到内存中, 并将这些静态数据转换成 方法区 中的运行时数据结构,在堆中 生成一个代表这个类的java.lang.Class 对象 ,作为方法区类数据的访问入口。

二  类加载过程

        类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括: 加载、链接( 验证、准备、解析 )、初始化、使用 和 卸载 七个阶段

三 类加载器

使用 C++ 实现,负责加载存放在 JDKjrelib (JDK 代表 JDK 的安装目录,下同)下,或被 -Xbootclasspath 参数指定的路径中的,并且能被虚拟机识别的类库(如 rt.jar,所有的 java.* 开头的类均被 Bootstrap ClassLoader 加载)。 启动类加载器是无法被 Java 程序直接引用的。

类加载器负责加载所有的类,其为所有被载入内存中的类生成一个java.lang.Class实例对象。一旦一个类被加载如JVM中,同一个类就不会被再次载入了。正如一个对象有一个唯一的标识一样,一个载入JVM的类也有一个唯一的标识。在Java中,一个类用其全限定类名(包括包名和类名)作为标识;但在JVM中,一个类用其全限定类名和其类加载器作为其唯一标识。例如,如果在pg的包中有一个名为Person的类,被类加载器ClassLoader的实例kl负责加载,则该Person类对应的Class对象在JVM中表示为(Person.pg.kl)。这意味着两个类加载器加载的同名类:(Person.pg.kl)和(Person.pg.kl2)是不同的、它们所加载的类也是完全不同、互不兼容的。

JDK自带有三个类加载器:

bootstrap ClassLoader,ExtClassLoader,AppClassLoader
bootstrap ClassLoader是ExtClassLoader的父类加载器,默认负责加载%JAVA_HOME%lib下的jar包和class文件。
ExtClassLoader是AppClassLoader的父类加载器,负责加载%JAVA_HOME%/lib/ext文件夹下的jar包和class类。
AppClassLoader是自定义类加载的父类,负责加载classpath下的类文件。系统类加载器,线程上下文加载器
继承ClassLoader实现自定义类加载器

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/886178.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号