Java之ClassLoader基础知识
2024-10-21 02:58:32
- ClassLoader基本概念
Java程序并不是一个可执行文件,而是由许多独立的类文件组成的,每一个文件对应一个Java类。这些类文件并非全部装入内存,而是根据程序需要逐渐载入。并且ClassLoader是JVM实现的一部分。 - ClassLoader加载流程
当运行一个程序的时候,JVM启动,运行bootstrap classloader,该ClassLoader加载Java核心API,然后调用ExtClassLoader加载扩展API,最后AppClassLoader加载CLASSPATH目录下定义的Class。
另:类加载的过程使用了一种父类委托模式,主要原因是避免重复加载,还有出于安全因素的考虑。
一些重要的方法
- loadClass方法,是ClassLoader的入口点
class loadClass(String name, boolean resolve)
defineClass方法,接受由原始字节组成的数组,并把它转换成Class对象
findSystemClass方法,从本地文件系统装入文件
- resolveClass方法,可以不完全装入类,也可以不完全装入类
- findLoadedClass方法,允当一个缓存:
当请求loadClass装入类时,它调用该方法来查看ClassLoader是否已装入这个类,这样可以避免重新装入已存在类所造成的麻烦
- findClass方法,从本地文件系统使用实现的类装载器装载一个类
- getSystemClassLoader方法
- forName方法,Class类的一个静态方法
Class.forName()调用Class.forName(name, initialize, loader);
也就是说Class.forName("something");等同于Class.forName("something", true, CALLCLASS.class.getClassLoader());
最新文章
- C#设计模式系列:备忘录模式(Memento)
- Option
- Hibernate批量处理数据、HQL连接查询
- 边工作边刷题:70天一遍leetcode: day 86-2
- 集群搭建必备:虚拟机之一实现Host-only方式上网
- 51nod1057 N的阶乘
- 轻量级跨平台消息传递协议XML-RPC深度解析
- ubuntu下使用 chkconfig 是一种习惯
- 并发库应用之十二 &; 常用集合问题汇总
- python一个命令开启http服务器
- Demo整合
- python 字符串和字节数互转
- Eclipse中一个项目调用另一个项目的资源
- python中函数与函数式编程(一)
- U帮忙U盘启动盘制作
- sys安装
- python进阶之函数和类内建魔法属性
- 【BZOJ1441】Min 拓展裴蜀定理
- C语言指针【转】
- Django - admin后台、auth权限