类加载
类加载指将类的字节码文件(.class)中的二进制数据读入内存,将其放在运行时数据区的方法区内,然后在堆上创建java.lang.class对象,封装类在方法区内的数据结构。类加载的最终产品是位于堆中的类对象,类对象封装了类在方法区内的数据结构,并且向java程序提供了访问方法区内数据结构的接口。如下是类加载器的层次关系图。
启动类加载器(bootstrapclassloader):在jvm运行时被创建,负责加载存放在jdk安装目录下的jre\lib的类文件,或者被-xbootclasspath参数指定的路径中,并且能被虚拟机识别的类库(如rt.jar,所有的java.*开头的类均被bootstrap classloader加载)。启动类无法被java程序直接引用。
扩展类加载器(extension classloader):该类加载器负责加载jdk安装目录下的\jre\lib\ext的类,或者由java.ext.dirs系统变量指定路径中的所有类库,开发者也可以直接使用扩展类加载器。
应用程序类加载器(appclassloader):负责加载用户类路径(classpath)所指定的类,开发者可以直接使用该类加载器,如果应用程序中没有定义过自己的类加载器,该类加载器为默认的类加载器。
用户自定义类加载器(user classloader):jvm自带的类加载器是从本地文件系统加载标准的java class文件,而自定义的类加载器可以做到在执行非置信代码之前,自动验证数字签名,动态地创建符合用户特定需要的定制化构建类,从特定的场所(数据库、网络中)取得java class。
注意如上的类加载器并不是通过继承的方式实现的,而是通过组合的方式实现的。而java虚拟机的加载模式是一种委派模式。下层的加载器能够看到上层加载器中的类,反之则不行。类加载器可以加载类但是不能卸载类。
今天的讲述到这里就结束了,如果您对昆明达内培训机构老师所讲述的内容有简介或更好的理解,欢迎大家一起讨论!
编辑短信:姓名+电话+想要学习课程 发送至:18487146383,发送短信即可获得1000元免费7天试听机会哦!
联系人:李老师
电话(微信):18487146383
网站:http://km.java.tedu.cn
昆明达内职业培训学校
18087159764