类加载器-双亲委派-源码分析1
双亲委派模式
所谓的双亲委派,就是指调用类加载器的 loadClass 方法时,查找类的规则
注意
protected Class<?> loadClass(String name, boolean resolve)
throws ClassNotFoundException {synchronized (getClassLoadingLock(name)) {// 1. 检查该类是否已经加载Class<?> c = findLoadedClass(name);if (c == null) {long t0 = System.nanoTime();try {if (parent != null) {// 2. 有上级的话,委派上级 loadClassc = parent.loadClass(name, false);} else {// 3. 如果没有上级了(ExtClassLoader),则委派BootstrapClassLoaderc = findBootstrapClassOrNull(name);}} catch (ClassNotFoundException e) {}if (c == null) {long t1 = System.nanoTime();// 4. 每一层找不到,调用 findClass 方法(每个类加载器自己扩展)来加载c = findClass(name);// 5. 记录耗时sun.misc.PerfCounter.getParentDelegationTime().addTime(t1 - t0);sun.misc.PerfCounter.getFindClassTime().addElapsedTimeFrom(t1);sun.misc.PerfCounter.getFindClasses().increment();}}if (resolve) {resolveClass(c);}return c;}
}
类加载器-双亲委派-源码分析1相关推荐
- 类加载器-双亲委派-源码分析2
public class Load5_3 {public static void main(String[] args) throws ClassNotFoundException {Class< ...
- 由源码深入Java类加载器(双亲委派模型)
JVM类加载器 JVM主要有以下几种类加载器: 引导类加载器 主要加载JVM运行核心类库,位于JRE的lib目录下,如rt.jar中的类. 扩展类加载器 主要加载JVM中扩展类,位于JRE的ext目录 ...
- 类加载器-双亲委派机制
上一篇:类加载器-分类 一.概述 除了根类加载器之外,其他的类加载器都需要有自己的父加载器.从JDK1.2开始,类的加载过程采用双亲委派机制,这种机制能够很好的保护java程序的安全.除了虚拟机自带的 ...
- 类加载器双亲委派模式
双亲委派模型的工作流程是:如果一个类加载器收到了类加载的请求,它首先不会自己去尝试加载这个类,而是把请求委托给父加载器去完成,依次向上,因此,所有的类加载请求最终都应该被传递到顶层的启动类加载器中,只 ...
- android+小米文件管理器源码,[MediaStore]小米文件管理器android版源码分析——数据来源...
打开小米的文件管理器,我们很快会看到如下图所示的界面: 其中,会把各种文件分类显示.并且显示出每种文件的个数. 这是怎么做到的呢?当然不是每次启动都查询sdcard和应用程序data目录文件啦,那样实 ...
- *CI框架装载器Loader.php源码分析
http://www.bitscn.com/pdb/php/201411/404680.html 顾名思义,装载器就是加载元素的,使用CI时,经常加载的有: $this->load->li ...
- THOR:MindSpore 自研高阶优化器源码分析和实践应用
摘要:这篇文章跟大家分享下THOR的实践应用.THOR算法的部分内容当前已经在MindSpore中开源 本文分享自华为云社区<MindSpore 自研高阶优化器源码分析和实践应用>,原文作 ...
- java中的类加载与双亲委派机制
类加载是什么 把磁盘中的java文件加载到内存中的过程叫做类加载 当我们用java命令运行某个类的main函数启动程序时,首先需要通过类加载器把主类加载到JVM. 有如下 User 类 package ...
- 【GitHub探索】python调试利器——pysnooper源码分析
前言 这次又开了个新坑--GitHub探索,主要内容是试水当期GitHub上较火的repo 虽然top榜上各路新手教程跟经典老不死项目占据了大半江山,但清流总是会有的. 第一期就试水一下pysnoop ...
最新文章
- .net core 1.0 实现负载多服务器单点登录
- Docker:Nginx-Redis-Mysql-PHP 部署
- JavaWeb(十七)——JSP中的九个内置对象
- 友盟+《小程序用户增长白皮书》:从五个角度入手分析小程序数据
- linux增加阵列磁盘空间,Linux Ubuntu系统下通过LVM创建软raid来实现硬盘合并大小
- 《中学生可以这样学Python》84节配套微课免费观看地址
- Python:timeit库使用方法
- JavaMail操作的总结(2)
- Linux命令基础5-文件重定向
- CSDN博客之星——找到自己的榜样
- c语言模拟交通信号,C语言编写的交通信号灯
- 计算机科学与技术单身率,中国大陆男女比例揭晓!大学单身率专业十强来了
- Reggie外卖项目 —— 项目开发整体介绍
- 计算机男朋友好处,程序猿男朋友的好处
- 低学历者已无法生存 程序员尤其明显
- 一文掌握GSEA,超详细教程!
- 35岁没有技能转行做什么工作岗位好?
- 20210209PC版微信 网络不可用,请检查你的网络设置 的解决方法
- Mac忘记登录密码解决方案
- java用面向对象写吃货联盟,火星车(面向对象思想编程)
热门文章
- WEBBASE篇: 第五篇, CSS知识3
- Chrome浏览器之 Postman 安装-转
- 使用PHP-GTK编写一个windows桌面应用程序
- net clr via c sharp chap1-- note
- (转)一个华科研究生导师的肺腑之言
- SharePoint Server 2010 一步一步从入门到精通
- VC+MO2.0连接ArcSDE并且读出SDE中的空间数据(三)
- 【Java并发编程】java并发框架Executor学习笔记
- DataGridView数据更新至数据库-逐条更新
- 第十二节 VMware View 6.0 菜鸟入门 部署和安装2008 R2 RDS服务