【JVM】初步认识Java虚拟机


在这里插入图片描述

🐌个人主页: 🐌 叶落闲庭
💨我的专栏:💨
c语言
数据结构
javaEE
操作系统
Redis

石可破也,而不可夺坚;丹可磨也,而不可夺赤。


JVM

  • 一、初识JVM
    • 1.1 什么是JVM
    • 1.2 JVM的功能
      • 1.2.1 解释和运行
      • 1.2.2 内存管理
      • 1.2.3 即时编译
      • 1.2.4 JVM 即时编译功能原理
    • 1.3 常见的JVM

一、初识JVM

1.1 什么是JVM

JVM全称是Java Virtual Machine,中文译名Java虚拟机,JVM本质上是一个运行在计算机上的程序,它的职责是运行Java字节码文件,在字节码文件中包含了一连串的指令,这个指令就是字节码指令,这些指令是无法直接在计算机上运行的,因为计算机只能识别机器码,而Java虚拟机就负责将字节码转换成机器码从而让电脑识别,这个过程被称为解释,相当于将一门语言翻译成另一门语言。


在这里插入图片描述


1.2 JVM的功能

1.2.1 解释和运行

Java虚拟机可以将字节码文件中的指令实时的解释成机器码,让计算机执行

1.2.2 内存管理

  • 自动为对象、方法等分配内存
  • 自动的垃圾回收机制,回收不再使用的对象,不用像C/C++那样需要手动释放空间,降低了程序员写代码的难度

1.2.3 即时编译

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

Java语言如果不做任何优化,其性能不如C/C++,因为Java语言需要将字节码指令通过JVM实时的解析为机器码才可以交给计算机运行,这个过程随着程序的执行,需要反复地执行,每次进行都需要花费一定的时间,而C/C++在编译过程中可以直接将源代码转换为计算机任何的机器码。
Java这样做的目的主要是为了支持跨平台特性,将一份字节码指令交给Linux、Windows平台,这些平台会安装不一样的JVM,分别将字节码解释成该平台上对应的机器码,实现了跨平台特性。

1.2.4 JVM 即时编译功能原理

有一个字节码文件,里面有一段字节码指令,虚拟机如果发现这段指令在很短时间内被多次调用,那么就会认为这段代码有必要去优化,会主动将代码解释并优化解析成机器码,然后将这个机器码保存在内存当中,这样当这段代码再次被执行时,就会直接从内存当中取出,直接调用。

  • JVM利用即时编译(Uust-In-Time简称IT)进行性能的优化,最终能达到接近C、C++语言的运行性能

1.3 常见的JVM

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

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

苹果安卓网页的H5封装成App的应用和原生开发的应用有什么不一样?

老哥在么?H5封装的app和原生开发的app有什么不一样?,不懂就要问,我能理解哈,虽然这个问题有点小白,但是我还是得认真回答,以防止我回答的不是很好,所以我科技了一下,所以…

input时间控件选择时禁用某个日期之前或之后

【版权所有,文章允许转载,但须以链接方式注明源地址,否则追究法律责任】【创作不易,点个赞就是对我最大的支持】 前言 仅作为学习笔记,供大家参考 总结的不错的话,记得点赞收藏关注哦! 目录 …

ubuntu20.04安装genymotion3.5.1

下载和安装genymotion https://www.genymotion.com/download/ wget https://dl.genymotion.com/releases/genymotion-3.5.1/genymotion-3.5.1-linux_x64.bin chmod x genymotion-3.5.1-linux_x64.bin sudo ./genymotion-3.5.1-linux_x64.bin默认位置为:/opt/genym…

【SpringCloud】微服务技术栈入门8 - 黑马旅游微服务项目实战笔记

目录 黑马旅游案例分页查询自动补全安装依赖自定义分词器Completion Suggester 聚合数据聚合的分类Bucket 聚合Metrix 聚合RestClient 实现聚合suggest 查询结果 数据同步同步策略mq 同步 eses 搭设集群 黑马旅游案例 分页查询 前端页面以及对应请求接口已经设置完备&#xff…

cdsn目录处理:空行替换2个```,在2个```中间添加“# 空行文本后遇到的第1行文字”?

原标题: python查找替换:查找空行,空行前后添加,中间添加 # 空格 空行后遇到的第1行文字?初始代码 查找空行空行前后添加 中间添加 # 空行后遇到的第1行文字txt 36 96 159 8 72可以使用Python的字符串处理函数来查找…

Vue3中使用tinymce全功能演示,包括开源功能

效果图: 1、下载插件: npm i tinymce npm i tinymce/tinymce-vue 2、在node_modules文件夹中找到tinymce下的skins复制到项目public文件夹中 (可以先创建一个tinymce文件夹): 3、在tinymce官网中下载中文包,并放在刚…

【AntDesign】多环境配置和启动

环境分类,可以分为 本地环境、测试环境、生产环境等,通过对不同环境配置内容,来实现对不同环境做不同的事情。 AntDesign 项目,通过 config.xxx.ts 添加不同的后缀来区分配置文件,启动时候通过后缀启动即可。 config…

如何基于先进视频技术,构建互联网视频监控安全管理平台解决方案

一、建设思路 依托互联网,建设一朵云,实现各类二三类视频资源统一接入,实现天网最后100米、10米、1米的全域覆盖。 依托人工智能与互联网技术,拓展视频资源在政府、社会面等多领域的全面应用;建设与运营模式并存&…

湖州OLED透明拼接屏技术应用引领现代化旅游观光方式

湖州市位于中国浙江省北部,拥有悠久的历史和丰富的文化遗产。湖州市以其美丽的湖泊和秀丽的自然风光而闻名。 作为中国重要的历史文化名城之一,湖州市有着丰富的文化遗产和历史资源,如古城墙、古建筑和古镇等。 这为OLED透明拼接屏技术的应用…

【Python 零基础入门】 函数

【Python 零基础入门】第五课 函数 【Python 零基础入门】第五课 函数函数在生活中的类比函数为什么要使用函数函数的格式无参函数含参函数 参数形参实参 变量作用域局部变量全局变量 递归函数基本的递归斐波那契数列 Lambda 表达式高阶函数map 函数filter 函数reduce 函数结合…

【RabbitMQ 实战】11 队列的结构和惰性队列

一、 队列的结构 队列的组成: 队列由 rabbit_amgqueue_process 和 backing_queue两部分组成。rabbit_amqqueue_process负责协议相关的消息处理,即接收生产者发布的消息、向消费者交付消息、处理消息的确认 (包括生产端的 confirm 和消费端的 ack) 等。…

进阶JAVA篇-Object类与Objects类、包装类的常用API(一)

目录 API 1.0 API概念 2.0 Object类的常用API 2.1 Object 中的 tostring() 方法 表示返回对象的字符串表达形式 2.2 Object 中的 equals(Object o) 方法 ,判断两个对象的是否相等 2.2.1深入了解如何重写Object 中的 equals(Object o) 方法 2.2.2 对重写Object 中的…