首页 > 其他分享 >JVM 类加载器、双亲委派原理

JVM 类加载器、双亲委派原理

时间:2023-03-05 13:22:43浏览次数:43  
标签:ClassLoader 双亲 JVM 卸载 class 加载

类加载器ClassLoader

作用:负责装入类。一个java程序运行,至少需要三个类加载器实例,负责加载不同类。

  1. BootstrapClassLoader是JVM内核内嵌加载器,主要负载加载JAVA_HOME/lib下的类库。
  2. ExtensionClassLoader,父类加载器是Bootstrap,主要加载JAVA_HOME/lib/ext目录中的类库。
  3. App ClassLoader是应用程序类加载器,负责加载应用程序classpath目录下的所有jar和class文件。它的父加载器为Ext ClassLoader。

类的生命周期说明:第一阶段的加载由ClassLoader查找加载。

共7个步骤:加载->验证->准备->解析->初始化->使用->卸载
在这里插入图片描述

查看类对应的加载器

可以通过JDK-API查看:java.lang.class.getClassLoader();返回装载类的类加载器。但是如果该类的类加载器是BootstrapClassLoader,则返回null。

JVM如何知道我们的类在哪里

类不会重复加载

类的唯一性:类名一样且由同一个类加载器加载,代表是同一个类。

类的卸载

满足一下两个条件的类会被卸载:

  1. 该Class的所有实例都被GC回收;
  2. 加载该类的ClassLoader实例已经被GC回收;
    验证方式:可以在jvm启动中增加参数-verbose:class,输出类的加载和卸载日志信息。

双亲委派模型

并非真正的父子类关系,可以理解为逻辑上下级关系。
为了避免重复加载,加载类时由下向上逐步委托,由上而下逐级查找,因此类不会重复被加载,且安全。
在这里插入图片描述

标签:ClassLoader,双亲,JVM,卸载,class,加载
From: https://www.cnblogs.com/ekko-w/p/17180303.html

相关文章

  • JavaScript 文档的加载
    <!DOCTYPEhtml><html> <head> <metacharset="UTF-8"> <title></title> <scripttype="text/javascript"> /* *浏览器在加载一个页面时,是按照自上向下......
  • 定位Dll加载异常的方法
    总体说明动态库加载异常的原因有以下几种:1.dll不在dll搜索路径2.dll依赖的其他dll不在dll搜索路径3.dll与exe不是同一架构,如exe是64位,dll是32位4.dll或依赖的dll其导......
  • 定位解析一个因脚本劫持导致webpack动态加载异常的问题
    问题描述项目现场的前端项目在点击顶部的导航栏切换不同的模块时,会有小概率出现模块加载报错的情况:我们的前端项目里是有基于react-loadable做的懒加载的,上图的12.be789......
  • 性能测试-JVM分析
    1、输出gc日志,jvm的启动参数中加入看jvm的gc信息:-XX:+PrintGC-XX:+PrintGCDetails-XX:+PrintGCTimestamps-XX:+PrintGCApplicationStopedTime启动后输出:GC概要信......
  • JVM系统优化实践(7):垃圾回收器与垃圾回收算法
    您好,我是湘王,这是我的51CTO博客,欢迎您来,欢迎您再来~上回说到了年轻代、老年代与数据计算的一个案例。接下来就先讲一讲年轻代和老年代的两个垃圾回收器:ParNew和CMS。和Serial......
  • Three.js实现高程数据加载
    通过加载高程数据(dem),显示地形高低起伏,达到良好的立体展示效果;Three.js能够通过设置一系列坐标点的高度,构建成面的形式,显示高程数据。实现方式:使用Three.js的PlaneGeometry进......
  • 使用 CSS 实现页面加载的淡入效果
    可以使用CSS过渡让文本段落在页面加载时淡入吗?我真的很喜欢它在http://dotmailapp.com/上的样子,并且很想使用CSS来使用类似的效果。该域名已被购买,不再具有提及的......
  • mybatis懒加载
    mybatis懒加载全局配置<settings><settingname="mapUnderscoreToCamelCase"value="true"/><!--开启懒加载(开启延迟加载)--><settingn......
  • 旅游线路分页展示_分页数据展示_前台代码_页码展示与旅游线路分页展示_分页数据展示_
    旅游线路分页展示_分页数据展示_前台代码_页码展示//当页码加载完成后,调用load方法,发送ajax请求加载数据load(cid);});functionload(cid,currentPa......
  • java文件生成字节码到加载到jvm的运行流程分析
    Java程序是怎么运行的?一 java代码到.class文件概括来说,写好的Java源代码文件经过Java编译器编译成字节码文件后,通过类加载器加载到内存中,才能被实例化,然后到Java......