虚拟机类加载机制

来源:互联网 发布:加密狗软件下载 编辑:程序博客网 时间:2024/06/13 21:23

虚拟机类加载机制

类加载的时机

  • 加载(Loading)、验证(Verification)、准备(Preparation)、解析(Resolution)、 初始化(Initialization)、使用(using)、卸载

加载、验证、准备、初始化和卸载这5个阶段的顺序是确定的,类的加载必须安装这种顺序按部就班的开始,而解析阶段,可以在初始化之后在开始,为了Java的运行时绑定(动态绑定)

类加载器

  • 从虚拟机角度只有两种类加载器:一种启动类加载器和所以其他的类加载器
  • 从java开发人员角度有三种系统提供的加载器
    • 启动类加载器(Bootstrap ClassLoader)(在JAVA_HOME\lib目录下),无法被java程序直接引用
    • 扩展类加载器(Extension ClassLoader)(JAVA_HOME\lib\ext目录下),可以直接使用扩展类加载器
    • 应用类加载器(Application ClassLoader)负责加载用户类路径上指定的类库,开发者可以直接使用

image

子类请求父类加载器去完成,首先不会自己去尝试加载类。父类无法加载自己才会去加载

tomcat服务器采用了自己的自定义加载器

image

灰色的三个是JDK提供的默认加载器,而CommonClassLoader、CatalinaClassLoader、SharedClassLoader和WebAppClassLoader则是tomcat自己定义的类加载器分别加载/common/、/server/、/shared/*、/webApp/WEB-INF/*中的Java类库.其中webApp类加载器和Jsp类加载器会存在多个实例,每一个Web应用程序对应一个WebApp类加载器,每一个JSP文件对应一个JSP类加载器

每个WebApp实例之间相互隔离。而Jsp类加载器的加载范围仅仅是这个JSP文件所编译出来的Class,它的出现是为被丢弃,但服务器检测到JSP文件被修改时,便会创建一个新的Jsp类加载器为了实现HotSwap功能

0 0
原创粉丝点击