JVM基础:初识JVM

news2024/11/26 8:31:16

IDE:IntelliJ IDEA 2022.1.3 x64
操作系统:win10 x64 位 家庭版


文章目录

  • 一、JVM是什么?
  • 二、JVM有哪些功能?
    • 2.1 解释和运行
    • 2.2 内存管理
    • 2.3 即时编译
  • 三、有哪些常见的JVM?
    • 3.1 常见JVM
    • 3.2 Java虚拟机规范
    • 3.3 HotSpot的发展历程


在这里插入图片描述


提示:以下是本篇文章正文内容,下面案例可供参考

一、JVM是什么?

JVM的英文全称是 Java Virtual Machine,其中文译名为Java虚拟机。它在本质上就是是一个运行在计算机上的程序,他的职责是运行Java字节码文件

JVM执行流程如下

在这里插入图片描述


二、JVM有哪些功能?

2.1 解释和运行

  • 对字节码文件中的指令,实时解释成机器码,让计算机执行

2.2 内存管理

  • 自动为对象、方法等分配内存
  • 自动的垃圾回收机制,回收不再使用的对象 (相对C/C++而言,C/C++无法自动回收垃圾)

2.3 即时编译

  • 对热点代码进行优化,提升执行效率

🤔什么是热点代码?

即在应用中短时间内被多次调用的代码

即时编译功能非常重要,Java语言如果不对此做优化,其性能远不如C/C++

🤔why?

👉请看如下编译对比所示

在这里插入图片描述

正是由于Java源代码需要先被编译生成字节码文件,而后Jvm需要实时解释字节码文件为计算机所能理解的机器码,而与此对比的C/C++ 源代码直接就可以通过编译和链接生成可执文件【机器码】,故而Java的执行性能要远低于C/C++

🤔那为何Jvm需要实时解释字节码文件?

为支持Java的跨平台性

🤔JVM如何执行即时编译功能?换而言之,它是如何做到的?

JVM在解释运行一个Java字节码文件时,会将其“翻译”成汇编语言或机器代码,特别地。它会针对其中的热点代码【字节码指令】保存到内存中,等到下次要执行该热点代码时,直接在内存中调用即可。

执行流程如下所示

在这里插入图片描述

正是有了即时编译【Just-In-Time 简称JIT】功能的优化性能,使得能Java可以达到接近C、C++语言的运行性能甚至在特定场景下实现超越,例如,在网络编程、多线程编程、图形界面开发等方面,Java的性能表现非常优秀。


三、有哪些常见的JVM?

3.1 常见JVM

名称作者支持版本社区活跃度(github star)特性适用场景
HotSpot (Oracle JDK版)Oracle所有版本高(闭源)使用最广泛,稳定可靠,社区活跃
JIT支持
Oracle JDK默认虚拟机
默认
HotSpot (Open JDK版)Oracle所有版本中(16.1k)同上
开源,Open JDK默认虚拟机
默认
对JDK有二次开发需求
GraalVMOracle11,17,19 企业版支持8高(18.7k)多语言支持
高性能、JIT、AOT支特
微服务、云原生架构
需要多语言混合编程
Dragonwell JDK 龙井Alibaba标准版8,11,17
扩展版11,17
低(3.9k)基于OpenJDK的增强
高性能、bug修复、安全性提升
JWarmup、ElasticHeap、Wisp特性支持
电商、物流、金融领域
对性能要求比较高
Eclipse OpenJ9 (原BM9)IBM8,11,17,19,20低(3.1k)高性能、可扩展
JIT、AOT特性支持
微服务、云原生架构

在这里插入图片描述

3.2 Java虚拟机规范

👉释义

所谓Java虚拟机的规范,就是第三方厂家可以按照Oracle提供的JVM开发规范,针对自己的产品特点,对JVM进行二次开发

👉注意

  • 《Java虚拟机规范》由Oracle制定,内容主要包含了Java虚拟机在设计和实现时需要遵守的规范,主要包含class字节码文件的定义、类和接口的加载和初始化、指令集等内容。
  • 《Java虚拟机规范》是对虚拟机设计的要求,而不是对Java设计的要求,也就是说虚拟机可以运行在其他的语言比如Groovy、Scala生成的class字节码文件之上。
  • 官网地址:https://docs.oracle.com/javase/specs/index.html

在这里插入图片描述

3.3 HotSpot的发展历程

在这里插入图片描述

参考资料

https://www.bilibili.com/video/BV1r94y1b7eS?p=7&spm_id_from=pageDriver&vd_source=5a34715e416a427a73a3ca52397848b5


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1092872.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

工业网关它的功能是什么

随着工业4.0的到来,工业网关在工业自动化领域中的作用越来越重要。工业网关是一种连接不同工业设备的网络设备,它能够实现不同设备之间的通信和数据传输。本文将以HiWoo Box为例,介绍工业网关的主要功能和应用场景。 一、工业网关的主要功能…

推荐几款简单易用的协作化项目管理工具

您是否正在寻找一种有效且简单的项目管理工具来帮助您与团队成员协作?项目管理工具在当今的商业世界中已经变得必不可少,因为它们帮助团队保持组织和生产力。找到合适的工具是困难的,因为有太多的选择。有些工具是为特定类型的项目设计的,而…

zabbix触发器与动作

一、触发器(Trigger) 1、概念: 在 Zabbix 中,触发器用于监测 Zabbix 监控系统中的各种指标和条件,并在特定条件满足时触发警报。(触发器用于定义监控项的报警阈值) 2、触发器对象&#xff1a…

CCF CSP认证 历年题目自练Day31

题目一 试题编号: 202206-1 试题名称: 归一化处理 时间限制: 500ms 内存限制: 512.0MB 题目背景 在机器学习中,对数据进行归一化处理是一种常用的技术。 将数据从各种各样分布调整为平均值为 0、方差为 1的标准分布&a…

Windows服务器监控工具

随着Windows服务器成为大多数网络不可或缺的一部分,一些关键业务功能永远依赖于它们的正常运行时间。其可用性和性能受到打击可能会对这些功能产生不利影响,进而极大地影响收入。 由于这些情况,通过主动衡量其性能并使用有效的Windows服务器…

html进阶语法

html进阶 列表、表格、表单 目标:掌握嵌套关系标签的写法,使用列表标签布局网页 01-列表 作用:布局内容排列整齐的区域。 列表分类:无序列表、有序列表、定义列表。 无序列表 作用:布局排列整齐的不需要规定顺序的…

21面向对象描述器

目录 1、什么是描述器? 1、原始的代码可以理解成为这样: 2、增加解释器可以改成如下,解释器就是集增删改查为一体的一个小的property 有一点需要注意的地方是:property里面内置的参数不是get_age()就是不用调用。 3、装饰器可…

【从零开始学习Redis | 第一篇】快速了解Redis

前言: 本篇对于Redis的讲解可以让我们简单的了解什么是Redis以及他的简单应用。主要还是因为我在学习苍穹外卖的时候,用到了这个知识点,而在平时的各种学习中,对于Redis的大名也是早有耳闻,因此今天来简单的介绍一下re…

基于动物迁徙优化的BP神经网络(分类应用) - 附代码

基于动物迁徙优化的BP神经网络(分类应用) - 附代码 文章目录 基于动物迁徙优化的BP神经网络(分类应用) - 附代码1.鸢尾花iris数据介绍2.数据集整理3.动物迁徙优化BP神经网络3.1 BP神经网络参数设置3.2 动物迁徙算法应用 4.测试结果…

推荐八个大学搜题软件和学习工具哪个好用且免费,一起对比看看

以下分享的软件提供了各种实用的功能,如数学公式计算、语文阅读辅助等,让大学生们在学习过程中更加高效和便利。 1.九超查题 这是一个老公众号了,我身边的很多朋友都在用,支持超新星、学习强国、知到、智慧树和各类专业网课题目…

PCB板的元素组成

PCB板是电子工艺一道重要的步骤,市面上几乎所有的电子产品的主板组成都是PCB板。 那正常一块PCB板上有哪些元素呢?正常一般会包括边框,过孔,通孔,铺铜等等。 焊盘: 就是用于焊接元器件,IC等引脚…

NSSCTF做题(9)

[GDOUCTF 2023]<ez_ze> 看见输入框而且有提示说是ssti注入 输入{{7*7}} 试试&#xff0c;发现报错 输入{%%}发现了是jinja2模板 找到关键函数 Python SSTI利用jinja过滤器进行Bypass ph0ebuss Blog 原理见这篇文章&#xff0c;这里直接给出payload {%set ninedict(aaa…

电子电器架构——基于Adaptive AUTOSAR的电子电器架构简析

基于Adaptive AUTOSAR的电子电器架构简析 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是你的不对。非必要不费力证明…

Jetpack:007-Kotlin中的Button

文章目录 1. 概念介绍2. 使用方法2.1 Button2.2 IconButton2.3 ElevatedButton2.4 OutlinedButton2.5 TextButton2.6 FloatingActionButton 3. 示例代码4. 内容总结 我们在上一章回中介绍了Jetpack中输入框相关的内容&#xff0c;本章回中将要介绍 Button。闲话休提&#xff0…

微信小程序入门讲解【超详细】

一. 微信小程序简介 1.1 什么是小程序 2017年度百度百科十大热词之一 微信小程序&#xff08;wei xin xiao cheng xu&#xff09;&#xff0c;简称小程序&#xff0c;英文名Mini Program&#xff0c;是一种不需要下载安装即可使用的应用( 张小龙对其的定义是无需安装&#xf…

C++指针解读(5)-- 指针和数组(多维数组)

相比一维数组&#xff0c;二维数组的概念和相关运算要复杂得多。 1、二维数组的存储及访问 假设有这么一个二维数组&#xff1a; int arr[3][4] {{ 10, 11, 12, 13 },{ 20, 21, 22, 23 },{ 30, 31, 32, 33 } }; 我们可以把二维数组看成数组的数组&#xff1a; &#xff…

Spring Cloud--Nacos+@RefreshScope实现配置的动态更新

原文网址&#xff1a;Spring Cloud--NacosRefreshScope实现配置的动态更新_IT利刃出鞘的博客-CSDN博客 简介 说明 本文介绍SpringCloud整合Nacos使用RefreshScope实现动态更新配置。 官网 Nacos Spring Cloud 快速开始 动态更新的介绍 动态更新的含义&#xff1a;修改应…

TOR(Top of Rack)

TOR TOR&#xff08;Top of Rack&#xff09;指的是在每个服务器机柜上部署1&#xff5e;2台交换机&#xff0c;服务器直接接入到本机柜的交换机上&#xff0c;实现服务器与交换机在机柜内的互联。虽然从字面上看&#xff0c;Top of Rack指的是“机柜顶部”&#xff0c;但实际T…

简述什么是值传递和引用传递?

1、什么是值传递,什么是引用传递? 值传递(pass by value)是指在调用函数时将实际参数复制一份传递到函数中,这样在函数中如果对参数进行修改,将不会影响到实际参数。 引用传递(pass by reference)是指在调用函数时将实际参数的地址直接传递到函数中,那么在函数中对参数…

位于同一子网下的ip在子网掩码配置错误的情况下如何进行通信(wireshrak抓包分析)

前言 最近看书发现个问题&#xff0c;正好想学习下wireshark的使用&#xff0c;于是抓包做了下实验。 问题是这样的&#xff0c;假设有服务器A和服务器B&#xff0c;正确配置下两者处于同一子网&#xff1b;此时B的网络配置正确&#xff0c;而A在配置子网掩码时出了错&#xff…