Java常见面试题-基础知识-JVM(二)

96 阅读1分钟

Tomcat类加载机制

Tomcat核心三部分

  • Web容器,处理静态页面;
  • CatAlina,一个servlet容器,处理servlet;
  • JSP容器,把jsp页面翻译成一般的servlet。
    Tomcat类加载机制
  • 启动类加载器(Bootstrap Classloader)
  • 扩展类加载器(Extension Classloader)
  • 应用程序类加载器(Application ClassLoader)
  • Common类加载器
  • Catalina类加载器
    • Shared类加载器
    • WebApp类加载器
      • Jsp类加载器 commonLoader:Tomcat最基本的类加载器,加载路径中的class可以被Tomcat容器本身以及各个WebApp访问;
        catalinaLoader:Tomcat容器私有的类加载器,加载路径中的class对于WebApp不可见;
        sharedLoader:各个WebApp共享的类加载器,加载路径中的class对于所有WebApp可见,但是对于Tomcat容器不可见;
        WebAppClassLoader:各个WebApp私有的类加载器,加载路径中的class只对当前WebApp可见。
        CommonClassLoader能加载的类都可以被CatalinaClassLoader和SharedClassLoader使用,从而实现了公有类库的 共用,而CatAlinaClassLoad而和SharedClassLoader自己能加载的类则与对方相互隔离。 WebAppClassLoader可以使用SharedClassLoader加载到的类,但各个WebAppClassLoader实例之间相互隔离; JasperLoader的加载范围仅仅是这个jsp文件所编译出来的那一个.Class文件,当Web容器检测到jsp文件被修改时, 会替换掉目前的JasperLoader的实例,并通过再建立一个新的Jsp类加载器来实现Jsp文件的HotSwap功能。