zoukankan      html  css  js  c++  java
  • JVM类加载器

    JVM类加载分为:

    • 跟类加载器:Bootstrap类加载器,由c++编写,主要负责加载虚拟机核心类库的加载。
    • 扩展类加载器:主要是加载JAVA_HOME下面的jre/lb/ext子目录里面的类库,该加载器是由纯JAVA语言实现的,是跟类加载器的子加载器。
    • 系统类加载器:主要负责classpath下的类库资源加载,其父类加载器是扩展类加载器,它也是默认的自定义类加载器。
      双亲委托机制:一个类加载被loadclass调用之后,并不会将其直接加载,而是交给当前类加载器的父加载器加载,直到最顶层的类加载器,然后依次向下加载。
      双亲委托加载机制图
      破环双亲加载机制:
    • 有过web项目部署经验的人都知道,热部署是经常要用的,热部署的原理也就是使用自定义类加载器进行类卸载和重新加载(三大类加载器是无法卸载的)

    类加载起的命名空间、运行时包、类的卸载等等:

    • 类加载器命名空间:
      每一个类都有各自的命名,其在加载器中的同一个class是独一无二的。
    • 运行时包:
      我们对每一个类都指定一个包,在同一个类加载器中,class的命名是由包名加类名组成,这样也是保证每一个class在同一个类的独一无二的命名。
    • 初始类加载器:
      根据JVM规定,所有参与的类加载,即使没有亲自加载该类,也都会被标示为该类的初始化类加载器。
    • 类的卸载
      JVM规定只有满足下面三个条件才能被卸载(GC回收):
      • 该类的实例已经被GC
      • 加载该类的classloader被回收
      • 该类的class实例没有在其他地方被引用。
    • 总结:
      • JVM三大类加载,它们使用双亲加载机制。双亲加载机制是包含关系,并非被继承关系。
      • 希望能交流更多技术,关注小白的微信公众号吧。
        在这里插入图片描述
    小白技术社
  • 相关阅读:
    linux定时器的使用
    6410 spi总线
    6410 spi 设备驱动
    qtcreator 安装后不能显示菜单
    基于Tiny 6410的内核移植 (NAND FLASH 、UBIFS篇)
    有关ajax跨域问题
    sqlmap的安装
    C# 连接数据库的配置方法
    初识Markdown
    ASP.NET 使用Ueditor富文本编辑器
  • 原文地址:https://www.cnblogs.com/xbjss/p/13326681.html
Copyright © 2011-2022 走看看