JVM进阶(十五)——JAVA 类加载器
来源:互联网 发布:软件体系结构设计实例 编辑:程序博客网 时间:2024/05/29 09:17
JVM进阶(十五)——JAVA 类加载器
今天我们将类加载机制5个阶段中的第一个阶段,加载,又叫做装载。为了便于阅读,以下都叫做装载。
装载的第一步就是要获得二进制的字节流,它可以从读.class文件获得,也可以从网络中接收别人发送的字节流。反正只要符合虚拟机规定的字节流格式都可以进入这个阶段。
有了字节流之后,要进行装载还需要一个工具,那就是加载器了。加载器既可以使用系统提供的引导类加载器,也可以使用用户自己定义加载器,只需要继承ClassLoader,再重写loadClass()方法就可以实现一个自己的简单加载器。
像上面的代码那样,就是一个简单的类加载器。当我们要自己加载某个类的时候,就可自己调用loadClass方法,参数通常为要加载类的全类名,再根据name获得文件,得到字节流后便可加载,如图。
一般的工作情况下我们不会自己去实现加载器,都是采用系统默认的加载器。绝大部分Java程序都会使用到系统提供的以下3种加载器:
- Bootstrap ClassLoader:启动类加载器。负责加载JAVA_HOME/lib/里所有能被虚拟机识别的类(如:rt.jar)。无法被Java程序直接引用,由C++实现,不是ClassLoader子类。
- Extension ClassLoader:扩展类加载器。负责加载java平台中扩展功能的一些jar包,包括JAVA_HOME/lib/ext/目录中的或java.ext.dirs系统变量指定目录下的所有类库。是ClassLoad的子类,开发者可以直接使用该加载器。
- App ClassLoader:应用程序类加载器。负责加载classpath中指定的jar包及目录中class。getSystemClassLoader()的返回值就是该加载器,开发者可以直接使用该加载器。
本篇博文先了解这些知识点,在下篇博文中我们会讲解虚拟机如何运用这些加载进行搭配工作。
对于刚刚上面的代码,小伙伴可以自己尝试着写写。字节流可以读文件,也可以通过网络获得,得到后进行加载,再通过反射执行loadClass()返回的对象的相关方法。
4 1
- JVM进阶(十五)——JAVA 类加载器
- JVM进阶(十五)——JAVA 类加载器
- JVM进阶(十四)——初识JAVA 类加载机制
- JVM进阶(十四)——初识JAVA 类加载机制
- Java类加载器进阶
- JVM进阶(九)——JAVA 年轻代收集器
- JVM进阶(十)——JAVA 年老代收集器
- JVM进阶(十一)——JAVA G1收集器
- JVM进阶(九)——JAVA 年轻代收集器
- JVM进阶(十)——JAVA 年老代收集器
- JVM进阶(十一)——JAVA G1收集器
- Java基础(十五)——高新技术之内省、类加载器、动态代理
- JVM进阶——加载-链接-初始化以及类的初始化过程
- JVM(3)——JVM类加载器
- JVM内核—JVM类加载机制
- JAVA JVM类加载
- Java JVM类加载
- 【010】【JVM——类加载器】
- c++第二次上级报告
- 委托与事件
- 第五次c++实验 税收问题
- TCP粘包问题的解决
- 华为oj初级 自守数
- JVM进阶(十五)——JAVA 类加载器
- 最大流问题-Ford-Fulkerson算法 C++极简实现
- 第一次没有看答案刷题
- spring集成mybatis后,打印SQL语句
- C++容易出错的操作符重载
- Win10环境下安装Cisco VPN Client的解决办法
- SQL Server 使用TOP语句注意
- JS DOM之类名修改
- 寻找数组中第k大的数