站长怎么添加网站内容,二级域名注册平台,建设单位到江川区住房和城乡建设局网站,宁德古田建设局网站IDE#xff1a;IntelliJ IDEA 2022.1.3 x64 操作系统#xff1a;win10 x64 位 家庭版 文章目录 一、JVM是什么#xff1f;二、JVM有哪些功能#xff1f;2.1 解释和运行2.2 内存管理2.3 即时编译 三、有哪些常见的JVM#xff1f;3.1 常见JVM3.2 Java虚拟机规范3.3 HotSpot的… IDEIntelliJ IDEA 2022.1.3 x64 操作系统win10 x64 位 家庭版 文章目录 一、JVM是什么二、JVM有哪些功能2.1 解释和运行2.2 内存管理2.3 即时编译 三、有哪些常见的JVM3.1 常见JVM3.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?p7spm_id_frompageDrivervd_source5a34715e416a427a73a3ca52397848b5