你得先知道

在介绍双亲委派机制的时候,不得不提 ClassLoader 。说ClassLoader之前,我们得先了解下Java的基本知识。

Java是运行在Java的虚拟机(.class 的

JVM中提供了三层的ClassLoader:

ExtClassLoader:主要负责加载jre/

那如果有一个 Hello.class 文件是如何被加载到JVM中的呢?

双亲委派机制

我打开了我的ClassLoader 类。然后将代码翻到 loadClass 方法:

public Class> loadClass(String name) throws ClassNotFoundException {

return loadClass(name, false);

}

// -----:point_down::point_down:-----

protected Class> loadClass(String name, boolean resolve)

throws ClassNotFoundException

{

// First, check if the class has already been loaded

Class> c =

其实这段代码已经很好的解释了双亲委派机制,为了大家更容易理解,我做了一张图来描述一下上面一段代码到底是怎么做的:

从上图中我们就更容易理解了,当一个Hello.class这样的文件要被加载时。不考虑我们自定义检查是否加载过 ,如果有那就无需再加载了。如果没有,那么会拿到 父加载器 ,然后调用父加载器的 loadClass 方法。父类中同理会先检查自己是否已经加载过,如果没有再往上。注意这个过程,知道到达 Bootstrap classLoader 之前,都是没有哪个加载器自己选择加载的。如果父加载器无法加载,会下沉到子加载器去加载,一直到最底层,如果没有任何加载器能加载,就会抛出 ClassNotFoundException 。

为什么要设计这种机制

这种设计有个好处是,如果有人想替换系统级别的类:String.java。篡改它的实现,但是在这种机制下这些系统的类已经被Bootstrap classLoader加载过了,所以并不会再去加载,从一定程度上防止了危险代码的植入。

android双亲委派机制,3分钟了解Java双亲委派机制相关推荐

  1. java垃圾回收机制_干货:Java 垃圾回收机制

    什么是自动垃圾回收? 自动垃圾回收是一种在堆内存中找出哪些对象在被使用,还有哪些对象没被使用,并且将后者删掉的机制. 所谓使用中的对象(已引用对象),指的是程序中有指针指向的对象:而未使用中的对象(未 ...

  2. java gc机制 优点_聊聊Java的GC机制

    作者 某人Valar 如需转载请保留原文链接 部分图片来自百度,如有侵权请联系删除 本文目录 什么是GC JVM内存结构简单介绍 可达性分析与GC Roots 常见的垃圾收集算法 1. 什么是GC G ...

  3. 【转载】Java异常控制机制和异常处理原则

    转载自Java异常控制机制和异常处理原则 Java异常控制机制又被称为"违例控制机制". 捕获程序错误最理想的时机是在编译阶段,这样可以彻底避免错误的代码运行.但并非所有的错误都能 ...

  4. 36.JVM内存分哪几个区,每个区的作用是什么、如和判断一个对象是否存活、java垃圾回收机制、垃圾收集的方法有哪些、java类加载过程、类加载机制、双亲委派、Minor GC和Major GC

    36.JVM内存分哪几个区,每个区的作用是什么? 37.如和判断一个对象是否存活?(或者GC对象的判定方法) 38.简述java垃圾回收机制? 39.java中垃圾收集的方法有哪些? 40.java类 ...

  5. java 双亲委派机制为什么叫“双亲”

    了解了双亲委派机制是什么之后,一直纠结为什么这里要叫"双亲",于是乎上网查了一些资料,大部分都说是翻译的问题,除此之外,其中一篇博客中提到了另一种见解,可以作为参考理解. &quo ...

  6. Java双亲委派机制

    1.什么是双亲委派? 虚拟机在加载类的过程中需要使用类加载器进行加载,而在Java中,类加载器有很多,那么当JVM想要加载一个.class文件的时候,到底应该由哪个类加载器加载呢? 这就不得不提到&q ...

  7. Java 双亲委派模型机制

    前言 Java是运行在Java的虚拟机(JVM)中的,在初步学习Java时,我们都知道,编写的Java源代码会被编译器编译成.class的字节码文件.然后ClassLoader负责将这些class文件 ...

  8. 双亲委派机制_面试官:双亲委派机制的原理和作用是什么?

    说到双亲委派机制,就必须要先要弄清楚Java的类加载器 什么是类加载器 Java类加载器(ClassLoader)是Java运行时环境(JRE)的一部分,负责动态的将Java类加载到Java虚拟机的内 ...

  9. Java双亲委派模型:为什么要双亲委派?如何打破它?破在哪里?

    文章目录 一.前言 二.类加载器 三.双亲委派机制 1.什么是双亲委派 2.为什么要双亲委派? 四.破坏双亲委派 1.直接自定义类加载器加载 2.跳过AppClassLoader和ExtClassLo ...

最新文章

  1. redis使用epoll
  2. 小规模网络数据公开数据_大规模的在线公开课程曾经是100%免费的。 但是他们没有那样做。...
  3. 探索“植物人”语言能力和意识水平
  4. 如何取消button的点击特效_如何衡量一个人的 JavaScript 水平?
  5. 吐槽一下现在的代码编辑器
  6. Java虚拟机-内存分配策略
  7. iOS开发UI篇-在UItableview中实现加载更多功能
  8. 于的繁体字有几种写法_人字繁体字有几种写法
  9. 基于Bootstrap的响应式网页
  10. 比例风险(Cox)回归模型——Proportional hazards model
  11. 前端骨架屏方案与实践
  12. 腾讯云后端面试15问(6年工作经验)
  13. 超卓航空通过注册:年营收1.4亿 湖北将再诞生一家上市企业
  14. iphone计算机的声音怎么办,苹果计算机安装win10系统的扬声器无声音该怎么解决...
  15. Icons - Material Design各种ICON图标大全
  16. Light Emitting Hindenburg(bitset运用)
  17. 编程初学者快速上手实战套路
  18. Java实现用户异地登陆踢人操作
  19. (转载)成都移动IPV6光猫设置教程
  20. QString、int、char、QByteArray直接的相互转换

热门文章

  1. DSP芯片在实时图像处理系统中的应用
  2. java accept consumer_Java 常用函数式接口 —— Consumer接口
  3. Java 之 Java 缓冲流与序列化
  4. 批量抽取word文档中的表格
  5. hibernate约束
  6. 鲲鹏920是计算机CPU吗,华为鲲鹏920处理器到底怎么样?
  7. 树莓派电子开发套件及配件组图
  8. 安卓视频播放器(VideoView)
  9. 使用桥接网络的jslinux
  10. 实战项目(5) MCP9600热电偶检测物体温度