ClassLoader学习心得
1. 实例化指令才会使类装载器装载类。单独声明并不会装载。
A a = new A(); // load class A
B b; // class B won't be loaded
2. 类的静态初始化块的执行默认是在第一次实例化时执行,而并非在装载时就执行。
采用 new class 或者 Class.forName(String) 的方式加载类时,默认行为是"加载类"和"执行初始化块"一起进行。
但是采用 Class.forName(String, boolean, ClassLoader) 的方式可以控制是否执行类的静态初始化工作, 第二个参数控制是否进行类的初始化工作。
采用 classLoader.loadClass() 的行为和 new class 的行为一致。
A a = new A(); // 执行类的静态块
Class.forName("B"); // 执行类的静态块
Class.forName("B", false, getClass().getClassLoader()); // 不执行类的静态块
getClass.getClassLoader().load("C"); // 执行类的静态块
3. 创建classloader的时候,被创建的classloader的parent是当前类的classloader
public class CustomLoader {
public static void main(String []args) {
URL urlPath = new URL("/home/");
URLClassLoader urlLoader = new URLClassLoader(new URL[]{urlPath});
System.out.println(urlLoader.getParent());
}
}
分享到:
相关推荐
理解Java ClassLoader机制
ClassLoader运行机制 自己写的ClassLoader运行机制 自己写的ClassLoader运行机制 自己写的ClassLoader运行机制 自己写的ClassLoader运行机制 自己写的
内容简介: ClassLoader体系结构 类装载器在JVM中并不是唯一的,JVM自带了三个装载器,用户也可以根据自己的需求自定义新的装载器,这些装载器的体系结构可以看作是树状结构,如图1所示:
ClassLoader类加载机制和原理详解
JVM内存模型,类加载模式工作机制详细,内存屏障,类从被加载到虚拟机内存中开始,直到卸载出内存为止,它的整个生命周期包括了:加载、验证、准备、解析、初始化、使用和卸载这7个阶段。其中,验证、准备和解析这三...
由osgi引出的classLoader的大总结(整理理解ClassLoader)
Java 虚拟机中ClassLoader 相关简介 双亲委托机制 Android 中ClassLoader 简介
主要介绍了Java Classloader机制用法代码解析,涉及JDK默认ClassLoader,双亲委托模型,自定义ClassLoader等相关内容,具有一定借鉴价值,需要的朋友可以参考下
【图解版】深入分析ClassLoader类加载工作机制,从原理到JVM的装载过程,详情分析了ClassLoader加载类以及自定义类加载器的过程,不可用于商业用途,如有版权问题,请联系删除!
类加载器是 Java 语言的一个创新,也是 ...不过如果遇到了需要与类加载器进行交互的情况,而对类加载器的机制又不是很了解的话,就很容易花大量的时间去调试 ClassNotFoundException和 NoClassDefFoundError等异常。
该电子书详细介绍了java虚拟机类加载机制,对于深入理解jvm工作原理有很好的帮助作用,对于初学java,有一定工作经验的小伙伴来说是一本提高自身java素养,夯实自己java基本技能的“葵花宝典”。
ClassLoader一个经常出现又让很多人望而却步的词,本文将试图以最浅显易懂的方式来讲解 ClassLoader,希望能对不了解该机制的朋友起到一点点作用
自定义classloader的使用
用于验证理解Android中Classloader加载类机制的程序demo,从中可以对比DexClassLoader和PathClassLoader的区别联系。
ClassLoader原理,ClassLoader原理 ClassLoader原理
破解java加密的ClassLoader.java,在classloader植入破解代码
Java ClassLoader定制实例
主要介绍了Java中的Classloader的运行机制,包括从JVM方面讲解类加载器的委托机制等,需要的朋友可以参考下
1. ClassLoader(类加载机制) 3. findLoadedClass (查找JVM已经加载过的类) 4. defineClass (定义一个Java
java classloader classpath 张孝祥