类加载的过程
2016-04-15 13:24
441 查看
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)
中指定的类库加载到内存中。开发者可以直接使用系统类加载器。
启动类加载器(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>
相关文章推荐
- 静态缓存案例生成一个html页面
- 删除排序链表中的重复元素
- 使用SQL Server Management Studio访问阿里云RDS SQL Server数据
- Tp使用phpexcel导入导出excel
- IOS学习之——navigationController的界面跳转方法
- 友盟,新浪微博,腾讯QQ分享的一些心得与总结,以及遇到的一些坑
- 排序的hashmap(guava)
- 请投票,《深入学习vSphere 6》图书封面选择
- 怎样才能用好EDIUS中的组与锁定
- Android设备通过fastboot刷入TWRP
- Java 8实现BASE64编解码
- 标记位
- httpget请求在android4.4系统出现java.net.ProtocolException: Unexpected status line:
- Hive几种导出数据方式
- TCP报文
- RF+Python实现右键操作
- vs2015web工程中的html引用压缩后css后无法智能提示的问题解决
- Cookie 与 Session 的区别
- UIView无法响应点击事件问题分析
- 使用virt-install手动创建qcow2镜像并安装ISO