JVM简明笔记1:JVM 概述
什么是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 概述的更多相关文章
- java之jvm学习笔记十三(jvm基本结构)
java之jvm学习笔记十三(jvm基本结构) 这一节,主要来学习jvm的基本结构,也就是概述.说是概述,内容很多,而且概念量也很大,不过关于概念方面,你不用担心,我完全有信心,让概念在你的脑子里变成 ...
- JVM学习笔记:JVM的体系结构与JVM的生命周期
1 JVM在java平台中的位置 1.1 Java平台组成 Java平台主要由Java虚拟机和Java API这两部分组成.参考Oracle官网. 1.2 java平台结构图 JDK1.2开始,迫于J ...
- java之jvm学习笔记十三(jvm基本结构) 通俗易懂的JVM 文件,没有之一
http://blog.csdn.net/yfqnihao/article/details/8289363
- Java SE之调整JVM内存笔记
[文档整理系列] Java SE之调整JVM内存笔记 一般JVM内存限制是64Mbyte Eclipse下 Run as configrationArguments选项:-Xmx80m [设置虚拟机 ...
- JVM内存管理和JVM垃圾回收机制
JVM内存管理和JVM垃圾回收机制(1) 这里向大家描述一下JVM学习笔记之JVM内存管理和JVM垃圾回收的概念,JVM内存结构由堆.栈.本地方法栈.方法区等部分组成,另外JVM分别对新生代和旧生代采 ...
- java jvm学习笔记十三(jvm基本结构)
欢迎装载请说明出处:http://blog.csdn.net/yfqnihao 这一节,主要来学习jvm的基本结构,也就是概述.说是概述,内容很多,而且概念量也很大,不过关于概念方面,你不用担心,我完 ...
- JVM学习笔记-第七章-虚拟机类加载机制
JVM学习笔记-第七章-虚拟机类加载机制 7.1 概述 Java虚拟机描述类的数据从Class文件加载到内存,并对数据进行校验.转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这个过程被 ...
- JVM学习笔记——垃圾回收篇
JVM学习笔记--垃圾回收篇 在本系列内容中我们会对JVM做一个系统的学习,本片将会介绍JVM的垃圾回收部分 我们会分为以下几部分进行介绍: 判断垃圾回收对象 垃圾回收算法 分代垃圾回收 垃圾回收器 ...
- JVM学习笔记——类加载和字节码技术篇
JVM学习笔记--类加载和字节码技术篇 在本系列内容中我们会对JVM做一个系统的学习,本片将会介绍JVM的类加载和字节码技术部分 我们会分为以下几部分进行介绍: 类文件结构 字节码指令 编译期处理 类 ...
- 一篇笔记整理JVM工作原理
首先要了解的 >>数据类型 Java虚拟机中,数据类型可以分为两类:基本类型和引用类型. 基本类型的变量保存原始值,即:他代表的值就是数值本身:而引用类型的变量保存引用值.“引用值”代表了 ...
随机推荐
- tp5.1 controller 名称自动转换大小写,导致文件名对不上 url_convert
// 是否自动转换URL中的控制器和操作名 'url_convert' => false, // true,
- manjaro安装微信deepin-wine-wechat后启动不了
直接将主目录下载的 .deepinwine 删除! 随后,点击图标,重新安装!
- PagerAdapter深度解析和实践优化
目录介绍 01.PagerAdapter简单介绍 02.PagerAdapter抽象方法 03.PagerAdapter原理介绍 04.PagerAdapter缓存和销毁 05.自定义PagerAda ...
- 记录--axios和loading不得不说的故事
这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 loading的展示和取消可以说是每个前端对接口的时候都要关心的一个问题.这篇文章将要帮你解决的就是如何结合axios更加简洁的处理loa ...
- 记录--vue3优雅的使用element-plus的dialog
这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 如何优雅的基于 element-plus,封装一个梦中情 dialog 优点 摆脱繁琐的 visible 的命名,以及反复的重复 dom. ...
- 鸿蒙HarmonyOS实战-ArkTS语言(状态管理)
前言 状态管理是指在应用程序中维护和更新应用程序状态的过程.在一个程序中,可能有很多不同的组件和模块,它们需要共享和相互作用的状态.如果没有一个明确的方式来管理这些状态,就会导致代码混乱.不易维护和难 ...
- 假期做了一项调研:大厂为啥都自研RPC?结果合乎情理!
大家好,我是冰河~~ 五一假期过的可真快,今天开始,又要搬砖了.在五一假期当中,冰河做了一项调研,感觉结果还是挺合乎情理的. 翻看招聘信息 先来看我在某招聘网站上随便搜索了下Java招聘的岗位,看到的 ...
- Oracle存储过程打印输出错误信息、行号,快速排查
测试存储过程如下: create or replace procedure prc_test is p_1 varchar2(2); begin p_1 := 'lxw测试'; exception w ...
- 脚本推荐-verilog自动对齐
verilog自动对齐脚本 简介 vscode中的verilog-utils可以自动例化 但是没有保留注释 导致注释丢失比较严重 这个为后期的维护带来了巨大的工作量 基于此,使用TCL脚本完成同样的工 ...
- KingbaseES V8R6集群部署案例之---openEuler系统脚本部署故障
案例说明: 在openEuler系统下通过脚本方式部署KingbaseES V8R6集群,脚本执行过程中,加载vip失败.本次故障问题,主要是因为openEuler系统shell和脚本的不兼容引起. ...