Java类加载器加载类的过程
来源:互联网 发布:解忧杂货店淘宝 编辑:程序博客网 时间:2024/06/02 04:34
首先判断该类是否已加载,如果已加载,返回对应的java.lang.Class对象;如果没加载,判断父加载器是否为空,如果不为空,用父加载器来加载,如果加载成功,直接返回,否则用当前类的加载器来加载;如果父记载器为空,则调用根加载器来加载,如果加载成功,返回对应的java.lang.Class对象,否则抛出ClassNotfoundException。
源码如下:
protected Class<?> loadClass(String name, boolean resolve) throws ClassNotFoundException { synchronized (getClassLoadingLock(name)) { // First, check if the class has already been loaded Class<?> c = findLoadedClass(name); if (c == null) { long t0 = System.nanoTime(); try { if (parent != null) { c = parent.loadClass(name, false); } else { c = findBootstrapClassOrNull(name); } } catch (ClassNotFoundException e) { // ClassNotFoundException thrown if class not found // from the non-null parent class loader } if (c == null) { // If still not found, then invoke findClass in order // to find the class. long t1 = System.nanoTime(); c = findClass(name); // this is the defining class loader; record the stats sun.misc.PerfCounter.getParentDelegationTime().addTime(t1 - t0); sun.misc.PerfCounter.getFindClassTime().addElapsedTimeFrom(t1); sun.misc.PerfCounter.getFindClasses().increment(); } } if (resolve) { resolveClass(c); } return c; } }
阅读全文
0 0
- Java类加载器加载过程
- Java类加载器加载类的过程
- Java类的加载过程
- Java类的加载过程
- java类的加载过程
- Java类的加载过程
- java 类的加载过程
- java类的加载过程
- java - 类的加载过程
- java类的加载过程
- Java类的加载过程
- java类加载的过程
- java类加载的过程
- Java类的加载过程
- java类的加载过程
- java类加载的过程
- java类加载的过程
- Java类的加载过程
- 记一款bug管理系统(bugdone.cn)的开发过程(2) -如何做好登录界面
- 【深度学习】写诗机器人tensorflow实现
- 《遗传算法的数学基础》阅读笔记 (2)_遗传机制和遗传算法。
- 生成ssl证书的步骤
- 大学最后的暑假开始
- Java类加载器加载类的过程
- 【Salesforce】(Tips) 外部APIで取得したPDFファイルをVisualforceで表示する
- php基础总结
- MVP的立即
- 剑指offer题五
- P2746 [USACO5.3]校园网Network of Schools
- Linux中free命令详解
- java多线程之yield
- Android属性动画完全解析(下),Interpolator和ViewPropertyAnimator的用法