我是靠谱客的博主 独特仙人掌,最近开发中收集的这篇文章主要介绍JVM类加载机制和tomcat类加载机制,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

JVM类加载机制
在这里插入图片描述
BootStrapClassLoader 启动类加载器 加载JVM运行时需要的类
ExtClassLoader 扩展类加载器 加载jdk、jre /lib目录下的类
AppClassLoader 应用类加载器 加载classpath目录指定的类
CustomClassLoader 用户自定义类加载器 用户自定义的类

加载步骤采用的双亲委托机制:
用户自定义加载器会将加载请求交给父类,父类再交父类,一层层上交,知道顶层启动类加载器;然后顶层加载如果加载不到,就会将委托给子类加载,一层层下传,如果加载不到,则抛出异常ClassNotFoundException;
在这里插入图片描述

tomcat加载机制:
在这里插入图片描述
1、Bootstrap引导类加载器 主要加载jvm启动需要的类和扩展类加载器加载的jre/jdk lib目录下的类
2、system 系统类加载器 主要加载的是tomcat启动需要的类 如bootstrap.jar
3、然后是应用类加载器加载web-inf/classes 目录下的类
4、再是应用类加载器加载web-inf/classes 目录下的类
5、common 公共类加载器 加载CATALINA_HOME/lib目录下的类

在这里插入图片描述
1、先在本地缓存中查找是否已经加载过该类(对于一些已经加载了的类,会被缓存在resourceEntries这个数据结构中),如果已经加载即返回,否则 继续下一步。
2、让系统类加载器(AppClassLoader)尝试加载该类,主要是为了防止一些基础类会被web中的类覆盖,如果加载到即返回,返回继续。
3、前两步均没加载到目标类,那么web应用的类加载器将自行加载,如果加载到则返回,否则继续下一步。
4、最后还是加载不到的话,则委托父类加载器(Common ClassLoader)去加载。

参考:http://www.cnblogs.com/aspirant/p/8991830.html

最后

以上就是独特仙人掌为你收集整理的JVM类加载机制和tomcat类加载机制的全部内容,希望文章能够帮你解决JVM类加载机制和tomcat类加载机制所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(49)

评论列表共有 0 条评论

立即
投稿
返回
顶部