JVM 类加载机制概述
Created on: October 14, 2024
Answered using O1 Preview by Chat01
Created on: October 14, 2024
Answered using O1 Preview by Chat01
用中文逐个介绍,jvm 类加载器,⾃定义类加载器,双亲委派机制,优缺点,tomcat 类加载机
制
在 Java 虚拟机(JVM)中,类加载器(ClassLoader)负责将字节码(.class 文件)加载到内存中,以供程序运行。JVM 内置了三种主要的类加载器:
启动类加载器(Bootstrap ClassLoader):
rt.jar
。扩展类加载器(Extension ClassLoader):
JAVA_HOME/lib/ext
目录下。sun.misc.Launcher$ExtClassLoader
实现。应用程序类加载器(AppClassLoader):
sun.misc.Launcher$AppClassLoader
实现,是默认的系统类加载器。有时,默认的类加载器无法满足特殊需求,例如从网络、数据库或加密的文件中加载类。这时可以通过继承 java.lang.ClassLoader
或其子类创建自定义类加载器。
步骤:
ClassLoader
。Class
对象。应用场景:
双亲委派机制是 JVM 类加载器的默认工作模式,其核心思想是层层委派,保证了 Java 类加载的安全性和稳定性。
工作流程:
优点:
java.lang.Object
类被加载。缺点:
Tomcat 作为一个常用的 Java Web 服务器,扩展了 JVM 的类加载机制,以支持多个 Web 应用的隔离和热部署。
类加载器结构:
Common ClassLoader:
Tomcat/lib
下的类,供所有应用共享。Catalina ClassLoader:
Shared ClassLoader:
Tomcat/shared
目录下的类,供特定应用共享。Webapp ClassLoader:
WEB-INF/classes
和 WEB-INF/lib
下的类。特点:
优点:
缺点:
ClassNotFoundException
或 NoClassDefFoundError
,难以定位。综上所述,JVM 的类加载器、自定义类加载器、双亲委派机制以及 Tomcat 的类加载机制共同构建了一个灵活、安全且可扩展的 Java 应用运行环境。但同时,这些机制也带来了复杂性,需要在开发和部署中仔细考虑和处理。