-
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
来源:https://www.cnblogs.com/linweiwang/p/15413633.html
最新更新
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
Python初学者友好丨详解参数传递类型
如何有效管理爬虫流量?
SQL SERVER中递归
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
这是目前我见过最好的跨域解决方案!
减少回流与重绘
减少回流与重绘
如何使用KrpanoToolJS在浏览器切图
performance.now() 与 Date.now() 对比
一款纯 JS 实现的轻量化图片编辑器
关于开发 VS Code 插件遇到的 workbench.scm.
前端设计模式——观察者模式
前端设计模式——中介者模式
创建型-原型模式