什么是JVM

JVM 即 Java Virtual Machine,中文名为 Java虚拟机。

一般情况下

  • C/C++ 程序,编译成二进制文件后,就可以直接执行了;
  • Java 需要使用 javac 编译成 .class 文件,还需要使用 Java 命令去主动执行它。JVM 就是识别 .class 后缀的文件,并且能够解析它的指令,最终调用操作系统上的函数。

Java 是一门抽象程度特别高的语言,提供了自动内存管理等一系列的特性。这些特性直接在操作系统上实现是不太可能的。而且有了 JVM 这个抽象层之后,Java 就可以实现跨平台了。Java 跨平台的意义在于一次编译,处处运行。而C/C++程序则需要对应不同的平台、架构分别编译成二进制文件。 现在的一些 JVM 的扩展语言,比如 Clojure、JRuby、Groovy 等,编译到最后都是 .class 文件,Java 语言的维护者,只需要控制好 JVM 这个解析器,就可以将这些扩展语言无缝的运行在 JVM 之上了。

从官网截取几张图来理解 JVM:

JVM JRE JDK的关系

JVM不能单独搞定 class 的执行,它还需要一个基本的类库,比如怎么操作文件、怎么连接网络等。JVM加上这些基础类库,就组成

了 Java 的运行时环境,也就是我们常说的 JRE(Java Runtime Environment)。

另外Java的开发者非常慷慨的实现了一些开发的工具,比如 javac、java、jar 等,是 Java 开发的核心。JRE加上这些工具就组成了 JDK(Java Development Kit))。

JVM 分块概述

  • 运行时数据区 (Runtime Data Areas):分为五大区域,方法区(Method Area)、堆(Heap)、虚拟机栈(Virtual Machine Stacks)、程序寄存器(Program Counter Registers)、本地方法栈(Native Method Stacks)
  • 类加载器 (ClassLoader):负责加载程序中的类和接口
  • 执行引擎 (Execution Engine):通过类装载器装载的,被分配到JVM的运行时数据区的字节码会被执行引擎执行
  • 垃圾收集 (Garbage Collect): 自动管理内存并进行垃圾回收

JVM 的不同实现

广义上来讲,JVM 是一种规范,Java发展的过程中产生了很多 VM 实现,我们现在最常用的 HotSpot VM。

下面表格是目前常见的 JVM 实现

虚拟机名称 介绍
HotSpot Oracle JDK和OpenJDK都使用HotSpot VM的相同核心
JRockit JRockit 也属 Oracle,目前为止 Oracle 一直在推进与 HotSpot 融合互补(大致上是在HotSpot的基础上,移植JRockit的优秀特性)
Azul Zulu 由Azul Systems根据HostPot为基础改进的高性能低延迟的JVM(最初针对专有硬件Vega系统,2010年发布了Zing VM面向通用x86平台)
OpenJ9 是IBM开发的高度模块化的JVM,目前已经捐献给Eclipse基金会
GraalVM 基于HotSpot / OpenJDK,它具有多语言功能,可以透明地混合和匹配支持的语言。

更多的JVM实现方案请查看 List of Java virtual machines - Wikipedia

JVM简明笔记1:JVM 概述的更多相关文章

  1. java之jvm学习笔记十三(jvm基本结构)

    java之jvm学习笔记十三(jvm基本结构) 这一节,主要来学习jvm的基本结构,也就是概述.说是概述,内容很多,而且概念量也很大,不过关于概念方面,你不用担心,我完全有信心,让概念在你的脑子里变成 ...

  2. JVM学习笔记:JVM的体系结构与JVM的生命周期

    1 JVM在java平台中的位置 1.1 Java平台组成 Java平台主要由Java虚拟机和Java API这两部分组成.参考Oracle官网. 1.2 java平台结构图 JDK1.2开始,迫于J ...

  3. java之jvm学习笔记十三(jvm基本结构) 通俗易懂的JVM 文件,没有之一

    http://blog.csdn.net/yfqnihao/article/details/8289363

  4. Java SE之调整JVM内存笔记

    [文档整理系列]  Java SE之调整JVM内存笔记 一般JVM内存限制是64Mbyte Eclipse下 Run as configrationArguments选项:-Xmx80m [设置虚拟机 ...

  5. JVM内存管理和JVM垃圾回收机制

    JVM内存管理和JVM垃圾回收机制(1) 这里向大家描述一下JVM学习笔记之JVM内存管理和JVM垃圾回收的概念,JVM内存结构由堆.栈.本地方法栈.方法区等部分组成,另外JVM分别对新生代和旧生代采 ...

  6. java jvm学习笔记十三(jvm基本结构)

    欢迎装载请说明出处:http://blog.csdn.net/yfqnihao 这一节,主要来学习jvm的基本结构,也就是概述.说是概述,内容很多,而且概念量也很大,不过关于概念方面,你不用担心,我完 ...

  7. JVM学习笔记-第七章-虚拟机类加载机制

    JVM学习笔记-第七章-虚拟机类加载机制 7.1 概述 Java虚拟机描述类的数据从Class文件加载到内存,并对数据进行校验.转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这个过程被 ...

  8. JVM学习笔记——垃圾回收篇

    JVM学习笔记--垃圾回收篇 在本系列内容中我们会对JVM做一个系统的学习,本片将会介绍JVM的垃圾回收部分 我们会分为以下几部分进行介绍: 判断垃圾回收对象 垃圾回收算法 分代垃圾回收 垃圾回收器 ...

  9. JVM学习笔记——类加载和字节码技术篇

    JVM学习笔记--类加载和字节码技术篇 在本系列内容中我们会对JVM做一个系统的学习,本片将会介绍JVM的类加载和字节码技术部分 我们会分为以下几部分进行介绍: 类文件结构 字节码指令 编译期处理 类 ...

  10. 一篇笔记整理JVM工作原理

    首先要了解的 >>数据类型 Java虚拟机中,数据类型可以分为两类:基本类型和引用类型. 基本类型的变量保存原始值,即:他代表的值就是数值本身:而引用类型的变量保存引用值.“引用值”代表了 ...

随机推荐

  1. 协议SPI:四线同步全双工 W25Qxx

    SPI传输速度快80M,富家子弟最简单最快速完成 SCK-时钟 MOSI主机输出(DO),从机输入 MISO(DI) SS Slave Select(CS Chip Select)从机选择线,低电平有 ...

  2. Swagger (API框架,API 文档 与API 定义同步更新)

    1.依赖 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring ...

  3. 学习笔记-涛讲F#(基础 II)

    目录 处理一堆数 组织代码(命名空间.模块) 使用联合重命名类型 类必须显式转换成接口 对象表达式 递归函数 CPS解决堆栈溢出 扩展一个类型 静态解析的类型参数 ref变量的实现原理及应用 F#资源 ...

  4. day13-Servlet03

    Servlet03 11.练习 快捷键-可以快速地在访问的文件件切换 ctrl+alt+向左箭头:回到上次访问的位置 ctrl+alt+向右箭头:回到下一步访问的位置 11.1CatServlet 首 ...

  5. Java加密技术(三)——PBE算法

    Javapbe对称加密     除了DES,我们还知道有DESede(TripleDES,就是3DES).AES.Blowfish.RC2.RC4(ARCFOUR)等多种对称加密方式,其实现方式大同小 ...

  6. STM32 启动代码分析

    PS:要转载请注明出处,本人版权所有. PS: 这个只是基于<我自己>的理解, 如果和你的原则及想法相冲突,请谅解,勿喷. 前置说明   本文作为本人csdn blog的主站的备份.(Bl ...

  7. 建民哥哥的AV

    1 #include<bits/stdc++.h> 2 #include<vector> 3 #include<algorithm> 4 using namespa ...

  8. 打造餐饮+元宇宙新体验!实时云渲染赋能DQverse未来世界

    随着元宇宙的迅猛发展,实体餐饮产业与虚拟元宇宙之间的交汇愈发频繁.诸如海底捞.奈雪的茶.星巴克.王老吉.肯德基等知名餐饮品牌纷纷加大对元宇宙领域的投资与布局. 图源网络 最初只是线上虚拟餐厅的概念,如 ...

  9. 不要升级!不要升级!MacOS 14.4 引发Java 应用崩溃

    如果最近您收到了MacOS 14.4的升级提醒,那么建议你暂时先不要升级! 在x上,Java开发领域的一些大v们,也发现了这个问题,并提醒大家不要升级. 根据Java官方发布的文章了解到,该问题主要是 ...

  10. CSS(复合选择器、显示模式、背景属性)

    一.emmet语法 1.简介 Emmet语法的前身是Zen coding,它使用缩写,来提高html/css的编写速度, Vscode内部已经集成该语法. 快速生成HTML结构语法 快速生成CSS样式 ...