• JVM基础:初识JVM


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



    在这里插入图片描述


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

    一、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


  • 相关阅读:
    【DC-DC升压电推剪方案】FP6277,FP6296电源升压芯片在电推剪中扮演着一个怎样的角色?带你深入了解电推剪的功能和应用及工作原理
    Vue.js快速入门之七:系统权限管理
    数据结构笔记(王道考研) 第八章:排序
    596. 超过5名学生的课
    Deformable Convolutional Networks
    直播获奖
    GDB常用命令
    安装pytorch总结
    C · 初阶 | 循环语句
    做外贸用以下邮箱比较好
  • 原文地址:https://blog.csdn.net/siaok/article/details/133828247