面试题:JVM 的组织架构

JVM 大致可以划分为四个部门:类加载器(ClassLoader)运行时数据区(Runtime Data Area)执行引擎(Native Interface) 和 本地库接口(Native Interface)。

    1. 类加载器
      负责从文件系统、网络或其他来源加载 Class 文件,将 Class 文件中的二进制数据读入到内存
    • ① 启动类加载器(Bootstrap Class Loader)

      它是 JVM 的内部 组件,负责加载 Java 核心类库(如java.lang)和其他被系统类加载器所需要的类。启动类加载器是由 JVM 实现提供的,通常使用本地代码来实现。

    • ② 扩展类加载器(Extension Class Loader)

      它是 sun.misc.Launcher$ExtClassLoader 类的实例,负责加载 Java 的扩展类库 (如 java.util、java.net)等。扩展类加载器通常从 java.ext.dirs 系统属性所指定的目录JDK 的扩展目录中加载类。

    • ③ 系统类加载器(System Class Loader)

      也称为应用类加载器(Application Class Loader),它是sun.misc.Launcher$AppClassLoader 类的实例,负责加载应用程序的类 。系统类加载器通常从 CLASSPATH 环境变量所指定的目录JVM 的类路径中加载类。

    • 用户自定义类加载器(User-defined Class Loader)

      这是开发人员根据需要自己实现的类加载器。用户自定义类加载器可以根据特定的加载策略和需求来加载类,例如从特定的网络位置、数据库或其他非传统来源加载类。


参考地址

    1. 运行时数据区
      JVM 在执行 Java 程序时,需要在内存中分配空间来处理各种数据,这些内存区域主要包括方法区、堆、栈、程序计数器和本地方法栈
    1. 执行引擎
      执行引擎是 JVM 的心脏,负责执行字节码 。它包括一个虚拟处理器,还包括即时编译器(JIT Compiler)和垃圾回收器(Garbage Collector)。
相关推荐
带娃的IT创业者5 分钟前
WeClaw 架构演进史:从 0 到 1 构建跨平台 AI 助手的完整历程
人工智能·python·websocket·架构·fastapi·架构设计·实时通信
im_AMBER1 小时前
高并发下的列表乱序与文档同步
前端·react.js·架构
only-qi1 小时前
空回滚、悬挂、幂等——TCC 分布式事务的三道暗礁
架构·分布式事务·空回滚、悬挂、幂等
无忧智库1 小时前
破局与重构:数字化转型深水区下“数智校园”的演进逻辑、架构范式与落地实战
重构·架构
大傻^2 小时前
Spring AI 2.0 企业级 RAG 架构:混合检索、重排序与多模态知识库
人工智能·spring·架构·多模态·rag·混合检索·重排序
爱丽_2 小时前
JVM 堆参数怎么设:先建立内存基线,再谈性能优化
java·jvm·性能优化
qq_334903152 小时前
使用Flask快速搭建轻量级Web应用
jvm·数据库·python
大模型RAG和Agent技术实践2 小时前
破译Word文档的“语义黑盒”:企业级DOCX RAG架构演进与全链路实战(完整源代码)
人工智能·架构·大模型·word·智能问答·rag
小小怪7503 小时前
将Python Web应用部署到服务器(Docker + Nginx)
jvm·数据库·python
2401_844221323 小时前
使用PictureBox实现图片缩放与显示的深入探讨
jvm·数据库·python·算法