JaneRoad

V1

2022/06/30阅读:15主题:全栈蓝

JVM系列:JDK、JRE、JVM 的关系

接下来会开启学习模式,大家一起跟着我过各大技术栈的知识点吧! 本篇文章过一遍JVM名词基础概念

JDK、JRE、JVM 的关系

1、JDK是 Java SE 开发工具包。JDK 是提供给 Java 开发人员使用的, 其中包含了 java 的开发工具,也包括了 JRE。所以安装了 JDK,就不用在单独安装 JRE 了。其中的开发工具包括编译工具(javac.exe) 打包工具(jar.exe)等。

2、JRE是 Java SE 运行 时环境。是 JDK 的子集,JRE 提供了库、Java 虚拟机(JVM)和其他组件,用于运行 Java 编程语言、小程序、应用程序。

JVM是 Java 虚拟机。JVM 可以理解为是一个虚拟出来的计算 机,具备着计算机的基本运算方式,它主要负责把 Java 程序生成的字节码文件, 解释成具体系统平台上的机器指令,让其在各个平台运行。

我们运行程序的 JVM 已经安装到 JDK中。

JDK 目录结构和作用

● bin :一堆 EXE 可执行文件,java.exejavac.exejavadoc.exe,以及密钥管理工具等

● db :内置了 Derby 数据库,体积小,免安装

● include: Java JVM 交互的头文件,例如我们JVMTI写的 C++ 工程时,就需要把这个 include 包引入进去jvmti.h

● jre:Java 运行环境,包含了运行时需要的可执行文件,以及运行时需要依赖的 Java 类库和动态链接库.so .dll .dylib

● lib:Java 类库,例如 dt.jartools.jar

JVM 结构和执行器

● Class Loader

类装载器是用于加载类文件的一个子系统,其主要功能有三个: loading、linking、initialization

● JVM Memory Areas

方法区、堆区、栈区、程序计数器。

● Interpreter 解释器

通过查找预定义的 JVM 指令到机器指令映射,JVM 解释器。可以将每个字节码指令转换为相应的本地指令。它直接执行字节码,不执行任何优化。

● JIT Compiler 即时编译器

为了提高效率,JIT Compiler 在运行时与 JVM 交互,并适当将字节码序列编译为本地机器代码。典型地,JIT Compiler 执行一段代码,不是每次一条语句。优化这块代码,并将其翻译为优化的机器代码。JIT Compiler 是默认开启

参考资料:小傅哥《Java面经手册》

分类:

后端

标签:

后端

作者介绍

JaneRoad
V1