• 【JVM】初步认识Java虚拟机



    在这里插入图片描述

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

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


    一、初识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特性支持微服务、云原生架构
  • 相关阅读:
    Docker-查看镜像仓库中镜像的版本信息
    第五十九回 公孙胜芒砀山降魔 晁天王曾头市中箭-飞桨自然语言处理套件PaddleNLP初探
    Docker安装达梦数据库+Java项目使用达梦
    01. 正则表达式概述
    《古代汉语》期末复习资料
    Postman —— postman实现参数化
    数据结构与算法之图的应用
    解锁高效检索技能:掌握MySQL索引数据结构的精髓
    [附源码]java毕业设计二手车交易系统
    华为分析&联运活动,助您提升游戏总体付费
  • 原文地址:https://blog.csdn.net/qq_64743563/article/details/133777438