类加载机制看了无数遍,只记住了个双亲委托模型,今天又看了一篇,算是在此默写一遍 。
类加载的过程:
- 装载。将类二级制码装载到jvm中,生成class文件
- 连接。a 检查class文件的数据完整性 b 分配静态变量的存储空间 c 将符号引用转为直接引用
- 初始化。初始化静态变量,静态方法和代码块。
- 通过双亲委托模型进行类加载。 类加载自上而下,类查找,自下而上。
类加载器,目前已知的自定义类加载器,类反射,字节码技术。
- 自定义类加载器。主要通过复写findclass, 来加载自己类路径的类。Loadclass ->findclass->defineClassd
defineclass 会对类路径进行判定,如果是java.开头的,一律抛异常,因此对java.的开头的顶级类,是无法通过自定义进行加载的。
2.自定义类加载器使用场景,如对class文件进行加密,需要使用自己的类加载器,才能解密。 另外一种是代码在远程服务器上,这条是我猜的。
字节码技术下一章节加上,先把文章应用放上https://blog.csdn.net/zhushuai1221/article/details/52169218