您好,欢迎来到年旅网。
搜索
您的当前位置:首页jvm & tomcat 类加载

jvm & tomcat 类加载

来源:年旅网

jvm类加载

类加载时机【lazy load】

预先加载

  • Java基础类的加载:启动程序到jdk目录下找到并载入jvm.dll启动虚拟机初始化参数创建BootStrap Loader对象。BootStrap Loader对象称为启动类装载器,它会在虚拟机启动时一次性加载JJVM的基础类。
  • 含main函数的类加载:BootStrap Loader另一项工作就是负责装载定义在sun.misc命名空间下的Launcher类。Launcher类有两个内部类,ExcClassLoader和AppClassLoader,其中,ExtClassLoader的父加载器被设置为null,表示它的父加载器为BootStarp Loader,即它由BootStrap Loader直接装载,而AppClassLoader的父加载器为ExtClassLoader,含有main函数入口的类由AppClassLoader在程序启动时加载。

按需加载

即运行时动态装载,当需要使用这个类时,JVM才会去动态装载它。
装载条件
当一个类的静态成员被第一次引用时,JVM就会去装载它,包括【静态方法-静态属性-构造方法】
需要特别注意的是:

按需装载流程

当需要使用某个类时,JVM首先会去检查该类的Class对象是否存在已经加载,如果没有,则执行以下步骤。

  1. 加载:查找并导入类的字节码,根据这些字节码创建Class对象
  2. 链接:其中分为三步
    1. 校验:检查导入的字节码的完整性,正确性、安全性。
    2. 准备:为静态域分配存储空间
    3. 解析:将符号引用转折为直接引用(非必需)
  3. 初始化

tomcat类加载

  1. bootstrap(等于jvm中的bootstrap+ext)
  2. system(catalina.bat指定类)
  3. webapp(WEB-INF/classes、WEB-INF/lib)
  4. common(CATALINA_HOME/lib)

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- oldu.cn 版权所有 浙ICP备2024123271号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务