`
j小虫
  • 浏览: 18491 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

ClassLoader原理

    博客分类:
  • java
 
阅读更多

一.ClassLoader分为bootClassStrap,ExtClassLoader,AppClassLoader.

booeClassStrap由C或更底层的语言实现,用来加载jvm和操作系统最底层的核心类库

Ext由java实现,用来加载比较核心的类库

App由java实现,用来加载应用资源,比如class path中的资源,eclipse plugin中的资源等等

 

二.加载器通常都是把加载权优先上抛给parent加载器,当parent加载不到时才转交给child,最后一个child也加载不到时,抛出ClassNotFoundException.

 

三.如下代码:

    ClassLoader cl = MyClassLoader.class.getClassLoader();
    System.out.println(cl);
    System.out.println(cl.getParent());
    System.out.println(cl.getParent().getParent());
    
    System.out.println("bootStrap:“"+System.getProperty("sun.boot.class.path"));

    System.out.println("extClassLoader:“"+System.getProperty("java.ext.dirs"));

    System.out.println("appClassLoader:“"+System.getProperty("java.class.path"));
    ClassLoader cl2 = MyDfs.class.getClassLoader();
    System.out.println("----------------------------------------------");
    System.out.println(cl2);
    System.out.println(cl2.getParent());
    System.out.println(cl2.getParent().getParent());
    
    System.out.println("bootStrap:“"+System.getProperty("sun.boot.class.path"));

    System.out.println("extClassLoader:“"+System.getProperty("java.ext.dirs"));

    System.out.println("appClassLoader:“"+System.getProperty("java.class.path"));

 运行结果:

sun.misc.Launcher$AppClassLoader@19821f

sun.misc.Launcher$ExtClassLoader@addbf1

null

bootStrap:“F:\istallHome\java\jdk\jre\lib\resources.jar;F:\istallHome\java\jdk\jre\lib\rt.jar

extClassLoader:“F:\istallHome\java\jdk\jre\lib\ext;C:\WINDOWS\Sun\Java\lib\ext

appClassLoader:“D:\workspace\project\work\hadoop-0.19.2\hadoop-0.19.2\src\contrib\eclipse-plug...

----------------------------------------------
sun.misc.Launcher$AppClassLoader@19821f
sun.misc.Launcher$ExtClassLoader@addbf1
null

bootStrap:“F:\istallHome\java\jdk\jre\lib\resources.jar;F:\istallHome\java\jdk\jre\lib\rt.jar

extClassLoader:“F:\istallHome\java\jdk\jre\lib\ext;C:\WINDOWS\Sun\Java\lib\ext
appClassLoader:“D:\workspace\project\work\hadoop-0.19.2\hadoop-0.19.2\src\....

 

可以看出来。他们分别加载了哪些东西,而且不同两个类的classLoader其实是同一个对象。至于BootStrap为什么为null.那是因为他不是java object,因为是用其他底层语言实现的,所以我们无法看到他的对象信息,但其实它是存在的。

分享到:
评论

相关推荐

    Java ClassLoader原理

    Sun 官方关于 ClassLoader原理的文章,值得一看

    webshpere classloader 原理

    详细说明了websphere classloader 的架构与实现

    Android 使用classloader原理进行热更新

    使用Android的classloader加载器实现热更新,通过反射机制获取到源码的Elements数组替换classes.dex实现更新,只能重启软件进行更新,无法实现实时更新。

    Java classloader原理深究

    前面已经写过一篇关于java classloader的拙文java classloader原理初探。  时隔几年,再看一遍,觉得有些地方显得太过苍白,于是再来一篇:  完成一个Java类之后,经过javac编译,会生成一个class文件,这个...

    ClassLoader类加载机制和原理详解

    ClassLoader类加载机制和原理详解

    Java ClassLoader 原理详细分析

    一、什么是ClassLoader?  大家都知道,当我们写好一个Java程序之后,不是管是CS还是BS应用,都是由若干个.class文件组织而成的一个完整的Java应用程序,当程序在运行时,即会调用该程序的一个入口函数来调用系统的...

    【图解版】深入分析ClassLoader类加载工作机制

    【图解版】深入分析ClassLoader类加载工作机制,从原理到JVM的装载过程,详情分析了ClassLoader加载类以及自定义类加载器的过程,不可用于商业用途,如有版权问题,请联系删除!

    ClassLoader 详解.doc

    关于J2EE服务器的ClassLoader的原理,该文档清晰了揭示了jvm装载类的顺序,同时用户可以自定义修改classLoader的配置 通过该文档,可以加深对Java虚拟机的理解

    ClassLoader加载机制

    该电子书详细介绍了java虚拟机类加载机制,对于深入理解jvm工作原理有很好的帮助作用,对于初学java,有一定工作经验的小伙伴来说是一本提高自身java素养,夯实自己java基本技能的“葵花宝典”。

    jboss 5 原理 2 classloader

    JBoss has always had a unique way of dealing with classloading, and the new classloading layer that comes with Microcontainer is no exception (keep in mind that you can use Microcontainer without ...

    java自定义类加载classloader文档,包括代码

    java自定义类加载classloader文档,包括代码,以及详细的原理及过程

    Java_ClassLoader详解

    Java_ClassLoader详解,解说java类的加载的原理,让你轻松了解java的类加载

    论文研究-ClassLoader加密技术改进研究 .pdf

    ClassLoader加密技术改进研究,徐首泽,金瓯,ClassLoader加密技术是Java当中用的比较广泛的代码保护技术,本文分析了ClassLoader加密技术的原理,发现并分析了现有方法存在的漏洞,同�

    Java中ClassLoader类加载学习总结

    本篇文章主要给大家讲述了Java中ClassLoader类加载的原理以及用法总结,一起学习下。

    Java类加载原理解析

    Java类加载原理解析 classloader

    深入JVM内核 - 原理、诊断与优化

    详细介绍ClassLoader的原理和应用。分析2个案例,说明ClassLoader的使用。 第七课 性能监控工具 线程死锁分析 OOM分析 介绍常用的JVM诊断和分析工具,并以死锁和OOM为例,展示这些工具的使用。 第八课 分析Java...

    Java编程语言的基本原理.docx

    Java 编程语言的基本原理 Java 编程语言是当今最流行的编程语言之一,它的基本原理是确保 Java 程序可以跨平台运行的。为了实现这一点,Java 虚拟机(JVM)扮演着至关重要的角色。 一、Java 程序跨平台原理 Java ...

    06.JVM原理讲解和调优.pdf

    JVM 原理讲解和调优 JVM(Java Virtual Machine,Java 虚拟机)是 Java 语言的核心组件,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。JVM 的主要功能是将 Java 字节码转换为...

Global site tag (gtag.js) - Google Analytics