面试题: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)。
相关推荐
hef2887 小时前
如何生成特定SQL的AWR报告_@awrsqrpt.sql深度剖析单条语句性能
jvm·数据库·python
段一凡-华北理工大学7 小时前
【大模型+知识图谱+工业智能体技术架构】~系列文章01:快速了解与初学入门!!!
人工智能·python·架构·知识图谱·工业智能体
xcjbqd08 小时前
Python API怎么加Token认证_JWT生成与验证拦截器实现
jvm·数据库·python
北漂Zachary9 小时前
Laravel 5.x升级亮点:从架构优化到API革新
架构·php·laravel
lpfasd1239 小时前
网站反爬机制的技术架构与演进
架构
Tony沈哲9 小时前
多智能体不是终点,而是起点:OpenVitamin 的 Agent Orchestration 的工程实现
架构·llm·agent
hef2889 小时前
golang如何使用range over func_golang range over func迭代器使用方法
jvm·数据库·python
qq_3806191610 小时前
html如何查看windows
jvm·数据库·python
gyx_这个杀手不太冷静11 小时前
大人工智能时代下前端界面全新开发模式的思考(三)
前端·架构·ai编程
wgzrmlrm7411 小时前
如何加固SQL环境部署_删除默认安装的示例数据库
jvm·数据库·python