使用自定义类加载器打破双亲委派机制实现自定义类

简介: 使用自定义类加载器打破双亲委派机制实现自定义类

 今天我和大家如何用自定义加载器打破双亲委派机制。

在介绍双亲委派机制前,我先来聊聊Java里面有几种类加载器。

  • 引导类加载器:Bootstrap classloader
  • 扩展类加载器:ExtClassLoader
  • 应用程序类加载器:AppClassLoader
  • 自定义加载器:MyClassLoader(这个名字自定义的)

 接下来我们来介绍下什么是双亲委派机制,如下图所示:

image.png

在这里类加载其实就是个双亲委派机制,比如加载某个类时会先委托父加载器寻找目标类,找不到再委托上层父加载器加载,当所有父加载器在自己的加载路径下都找不到目标类的话就会在自己的类加载路径中查找并且载入目标类。

 双亲委派机制的本质就是,加载类时先从父加载器中加载,父加载器没有,再由子加载器中加载。

为什么要设计双亲委派机制?

  • 沙箱安全机制:如果有人想替换系统级别的类:String.java是不会被加载的,这样便可以防止核心API库被随意篡改。
  • 避免类的重复加载:当父加载器已经加载了该类时,就没有必要子加载器再加载一次,保证被加载类的唯一性。

下面我们来通过自定义加载器来打破这种双亲委派机制,并且我们自定义一个String类,让它加载到JVM中运行起来。

image.png

自定义类加载器

image.png

在目标文文件夹里使用javac 指令将String.java 生成String.class字节码文件。

image.png

字节码文件已生成

image.png

运行自定义类加载器

image.png

运行结果

就这样我们使用自定义的类加载器实现了自定String类的运行。

目录
相关文章
|
8月前
|
存储 Java 编译器
类加载机制和双亲委派机制
类加载机制和双亲委派机制
|
2月前
|
Java
类加载器和双亲委派机制
从父类加载器到子类加载器分别为: BootStrapClassLoader 加载路径为:JAVA_HOME/jre/lib ExtensionClassLoader 加载路径为:JAVA_HOME/jre/lib/ext ApplicationClassLoader 加载路径为:classpath 还有一个自定义类加载器
|
3月前
|
缓存 前端开发 Java
JVM知识体系学习二:ClassLoader 类加载器、类加载器层次、类过载过程之双亲委派机制、类加载范围、自定义类加载器、编译器、懒加载模式、打破双亲委派机制
这篇文章详细介绍了JVM中ClassLoader的工作原理,包括类加载器的层次结构、双亲委派机制、类加载过程、自定义类加载器的实现,以及如何打破双亲委派机制来实现热部署等功能。
83 3
|
4月前
|
Arthas Java 测试技术
JVM —— 类加载器的分类,双亲委派机制
类加载器的分类,双亲委派机制:启动类加载器、扩展类加载器、应用程序类加载器、自定义类加载器;JDK8及之前的版本,JDK9之后的版本;什么是双亲委派模型,双亲委派模型的作用,如何打破双亲委派机制
JVM —— 类加载器的分类,双亲委派机制
|
8月前
|
监控 安全 前端开发
JVM工作原理与实战(十二):打破双亲委派机制-自定义类加载器
JVM作为Java程序的运行环境,其负责解释和执行字节码,管理内存,确保安全,支持多线程和提供性能监控工具,以及确保程序的跨平台运行。本文主要介绍了打破双亲委派机制的方法、自定义类加载器等内容。
96 1
|
8月前
|
前端开发 Java 开发者
JVM类加载器的分类以及双亲委派机制
JVM类加载器的分类以及双亲委派机制
|
存储 缓存 安全
JVM面试专题-双亲委派机制(父类委托机制)
JVM面试专题-什么是双亲委派机制(父类委托机制)?如何打破双亲委派机制?双亲委派机制的优缺点?什么是沙箱安全机制呢?
209 1
|
8月前
|
前端开发 Java API
JVM 类加载器 双亲委派机制
【1月更文挑战第3天】JVM 类加载器 双亲委派机制
|
前端开发 Java C++
【面试题精讲】JVM-打破双亲委派机制-自定义类加载器
【面试题精讲】JVM-打破双亲委派机制-自定义类加载器
|
前端开发 Java
05-说下类加载器和双亲委派机制
在明白了整个类从加载到初始化的过程,接下来我们有必要来说下类加载器的概念,因为实现上述过程是必须依靠加载器来实现的。
72 0
05-说下类加载器和双亲委派机制