
java类加载器
java类加载器的深入剖析
北冥有大大鱼
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
java 类的加载结论五之java双亲委托模型作用分析
java 类的双亲委托机制好处: 1. 可以确保JAVA 核心库的类型安全:(比如:java.lang.Object 用记不能自定义该类,即使在后续过程中通过了编译,但是在执行时,Object 已经被启动类加载器加载了,在同一命名空间中只能存在一个类型的Class 对象) 所有的Java应用都至少会引用java.lang.Object 类,也就是说在运行期,java.la...原创 2020-03-23 23:20:57 · 159 阅读 · 0 评论 -
java 类的加载结论四之类命名空间特性详解操作
结论:在 《java 类的加载结论四》的第16个结论,这里面在复述一下:命名空间: 每个类加载器都有自己的命名空间,命名空间由该加载器及所有父加载器所加载的类组成。==> 子类加载器能看见父类加载器加载的类,而父类加载器不能看见子类加载器所加载的类。jvm 这样子设计有效提高了安全性. 特征: 1. 在同一个命名空间中,不会出现类的完整名...原创 2020-03-22 16:29:25 · 219 阅读 · 0 评论 -
java 自定义类加载器代码示例
/** * 自定义类加载器 */class MyClassLoader extends ClassLoader { private String path;//自定义类加载路径 private String classLoaderName;//类加载器名称 private final String fileExtensionName = ".class";//...原创 2020-03-18 23:15:52 · 459 阅读 · 0 评论 -
java 类的加载结论四
结论:13. 在classpath 下的类,如果自定义类加载器没有重写loadClass 方法而是重写了 findClass 方法,自定义的类加载器会委托给其父类加载器进行类的加载,然而classpath 目录下的类,刚好能被ApplicationClassLoader系统类加载器进行加载,故不会调用子类的findClass 方法进行类的加载,且由于两个类加载器的父加载器都是同一个系统类加载...原创 2020-03-18 22:57:56 · 197 阅读 · 0 评论 -
java 虚拟机中类加载器中的概念定义
类加载器: 类加载器是一个用于加载类的对象。ClassLoader 是一个抽象类。类加载器通过给定的class 文件名,尝试进行定位或者加载生成构成定义该类的数据。通常的做法是在文件系统中将名称转化为文件名,并从文件系统中根据名称进行读取。类的卸载:由Java虚拟机自带的类加载器所加载的类,在虚拟机的生命周期中,始终不会被卸载。(java虚拟机自带的类加载器主要是Bootrap ...原创 2020-03-18 22:48:30 · 181 阅读 · 0 评论 -
java 类的加载结论三
关于ClassLoader类的javaDoc分析请点击结论:8. 每一个类加载器的实例中都存在着一个与之相关的父类加载器,类加载器加载类或者资源时是通过使用委托机制进行的9. ClassLoader 默认情况下是被注册支持并行的,如果在层级结构不严谨时,必须要具备并行加载类的能力,否则容易造成死锁10. 类加载器加载类并非只从文件系统(classpath)下进行加载类,还可以...原创 2020-03-16 22:05:26 · 159 阅读 · 0 评论 -
java 类的加载结论二
结论二:4.系统类加载器的父加载器是扩展类加载器,而扩展类加载器是根类加载器,但是在调用ClassLoader.getParent() 方法获取父加载器时,根类加载器返回null5.java 中的数组类对象并不是由类加载器进行加载的,它是由jvm根据需要进行动态加载的。除了数组,java任何的类都是由类加载器进行加载的6. 数组对象调用其getClass()方法获取其Class 对象...原创 2020-03-15 18:33:24 · 124 阅读 · 0 评论 -
ClassLoader javaDoc 解读
java.langpublic abstract class ClassLoaderextends ObjectClassLoader 类继承的Object类,位于java.lang 包下,它是由根类加载器进行加载的,因为它位于rt.jar 包中A class loader is an object that is responsible for loading classe...原创 2020-03-15 16:20:04 · 184 阅读 · 0 评论 -
java 类的加载结论一
结论:类的双亲委托机制:1. java 虚拟机中存在的类加载器: 根类加载器:加载jre/lib/rt.jar 或者 -Xbootclasspath 选项指定的jar 包 扩展类加载器:加载jre/lib/ext/*.jar 或者 -Djava.ext.dirs 指定目录下的jar包 应用(系统)类加载器:加载classpath 或者 -Djava.class.p...原创 2020-03-15 11:12:16 · 166 阅读 · 0 评论 -
java类的初始化结论二
结论:1.JVM 参数:-XX:+TraceClassLoading 输出类的加载信息2. 类初始化时会加载其实现的接口,不会初始化其实现的接口3. 接口中如果是常量且该常量值为字面量时,不会加载其接口本身和其父接口,故也不会进行初始化;其中原因是在编译过程中如果常量是字面量会被编译器将常量值直接放入调用类的静态池中4. 接口中如果是常量且该常量值为不为字面量时,会...原创 2020-03-12 21:38:37 · 189 阅读 · 0 评论 -
java类的初始化结论一
结论:1.类的主动使用会导致类的初始化 主动使用有: new 一个类的实例, 调用类的反射,访问类的静态变量或将静态变量庙会,调用类的静态方法,初始化一个类的子类,启动类main 方法所有类, JDK 1.7以后动态语言的调用2. 创建对象时,先执行静态代码块,然后执行代码块,最后执行其构造方法3.类的静态代码只有在类的初始化被执行(对应类对象在jvm只有一个),只能执行一次...原创 2020-03-11 22:13:53 · 138 阅读 · 0 评论 -
ServiceLoader 机制原理和源码分析
一:工作原理:serviceloader 是一个server 提供者加载设施,目前 应用了到了SPI( jdbc 驱动),它提供了延迟加载功能。当调用 ServiceLoader.load(Class clz) 方法时,会到jar中中的目录 "META-INF/services/" + clz.getName 进行文件读取,然后当在调用LazyIterator.hasNext() 时,...原创 2018-12-28 14:34:36 · 948 阅读 · 0 评论