类加载的过程
来源:互联网 发布:坐炮机的体验知乎 编辑:程序博客网 时间:2024/06/03 18:16
Java虚拟机定义了三种类加载器:
启动类加载器(Bootstrap):引导类装入器是用本地代码实现的类装入器,它负责<JAVA_Runtime_Home>/lib下面类库加载到内存中。由于引导类加载器设计到虚拟机本地实现细节,开发者无法直接获取到启动类加载器的引用,所以不允许直接通过引用进行操作。
准扩展(Extension)类加载器:扩展类加载是由Sun的ExtClassLoader实现的。它负责将<Java_Runtime_Home>/lib/ext或者由系统变量java.ext.dir指定位置中的类库加载到内存中。开发者可以使用标准扩展类加载器。
系统(System)类加载器:系统类加载器是由 Sun 的 AppClassLoader
(sun.misc.Launcher$AppClassLoader)实现的。它负责将系统类路径(CLASSPATH)
中指定的类库加载到内存中。开发者可以直接使用系统类加载器。
<span style="font-size:18px;">public Class<?> loadClass(String name)throws ClassNotFoundException { return loadClass(name, false);}protectedsynchronized Class<?> loadClass(String name, boolean resolve) throws ClassNotFoundException { // 首先判断该类型是否已经被加载 Class c = findLoadedClass(name); if (c == null) { //如果没有被加载,就委托给父类加载或者委派给启动类加载器加载 try { if (parent != null) {//如果存在父类加载器,就委派给父类加载器加载 c = parent.loadClass(name, false); } else {//如果不存在父类加载器,就检查是否是由启动类加载器加载的类,通过调用本地方法native Class findBootstrapClass(String name) c = findBootstrapClass0(name); } } catch (ClassNotFoundException e) { // 如果父类加载器和启动类加载器都不能完成加载任务,才调用自身的加载功能 c = findClass(name); } } if (resolve) { resolveClass(c); } return c; }</span>
0 0
- 类的加载过程
- 类的加载过程
- 类的加载过程
- 类的加载过程
- 类加载的过程
- 类加载的过程
- 类的加载过程
- 类的加载过程
- 类加载的过程
- 类加载的过程
- 类的加载过程
- 类的加载过程
- 类加载的过程
- Java类的加载过程
- Java类的加载过程
- java类的加载过程
- Java类的加载过程
- java 类的加载过程
- 关于bugfree的配置问题
- 一个简单的模板数组
- 如何实现webview上传图片
- Android Service中给其他的组件回传数据。
- 深入理解JavaScript没有重载的原因:
- 类加载的过程
- thinkphp 结合phpexcel实现excel导入
- NEFU 500 网购 网络流+二分
- 6410之AD驱动与触摸屏共存(上)
- 循环神经网络(RNN, Recurrent Neural Networks)介绍
- postgresql流复制
- java DateUtil
- 博客之旅
- android 网络工具类