当前位置: 首页 > news >正文

1、初识JVM

一、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字节码文件时,会将其“翻译”成汇编语言或机器代码,特别地。它会针对其中的热点代码【字节码指令】保存到内存中,等到下次要执行该热点代码时,直接在内存中调用即可。
执行流程如下所示
在这里插入图片描述
三、有哪些常见的JVM?
3.1 常见JVM
在这里插入图片描述
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的发展历程
在这里插入图片描述

相关文章:

  • windows docker
  • 优化选址问题 | 模拟退火算法求解物流选址问题含Matlab源码
  • 有什么小程序适合个人开发?
  • 递归和递推的区别
  • yolov6实现遥感影像目标识别|以DIOR数据集为例
  • CodeSys创建自定义的html5控件
  • Kafka生产者相关概念
  • linux内核input子系统概述
  • 浮点数在计算机中的存储
  • 飞天使-k8s知识点27-kubernetes温故知新2-deployment
  • 如何成为顶尖程序员?
  • 二、阅读器的开发(初始)-- 1、阅读器简介及开发准备工作
  • 复试专业前沿问题问答合集10-1——区块链与加密货币
  • 内存条@电脑支持的最大内存@升级内存硬件
  • 安防监控视频汇聚平台EasyCVR接入海康Ehome设备,设备在线但视频无法播放是什么原因?
  • Google 是如何开发 Web 框架的
  • 10个最佳ES6特性 ES7与ES8的特性
  • IP路由与转发
  • Java 网络编程(2):UDP 的使用
  • java中的hashCode
  • Laravel Mix运行时关于es2015报错解决方案
  • Linux后台研发超实用命令总结
  • maven工程打包jar以及java jar命令的classpath使用
  • mysql_config not found
  • spring boot 整合mybatis 无法输出sql的问题
  • 表单中readonly的input等标签,禁止光标进入(focus)的几种方式
  • 基于OpenResty的Lua Web框架lor0.0.2预览版发布
  • 来,膜拜下android roadmap,强大的执行力
  • 如何正确配置 Ubuntu 14.04 服务器?
  • 物联网链路协议
  • 小程序button引导用户授权
  • 小程序开发中的那些坑
  • 学习HTTP相关知识笔记
  • Nginx惊现漏洞 百万网站面临“拖库”风险
  • ​3ds Max插件CG MAGIC图形板块为您提升线条效率!
  • ​七周四次课(5月9日)iptables filter表案例、iptables nat表应用
  • (1)无线电失控保护(二)
  • (10)Linux冯诺依曼结构操作系统的再次理解
  • (2024,RWKV-5/6,RNN,矩阵值注意力状态,数据依赖线性插值,LoRA,多语言分词器)Eagle 和 Finch
  • (C语言)深入理解指针2之野指针与传值与传址与assert断言
  • (pojstep1.3.1)1017(构造法模拟)
  • (动手学习深度学习)第13章 计算机视觉---微调
  • (二)斐波那契Fabonacci函数
  • (附源码)spring boot基于小程序酒店疫情系统 毕业设计 091931
  • (附源码)基于ssm的模具配件账单管理系统 毕业设计 081848
  • (求助)用傲游上csdn博客时标签栏和网址栏一直显示袁萌 的头像
  • (实战)静默dbca安装创建数据库 --参数说明+举例
  • (数据结构)顺序表的定义
  • (学习日记)2024.04.10:UCOSIII第三十八节:事件实验
  • (转)scrum常见工具列表
  • (转)Spring4.2.5+Hibernate4.3.11+Struts1.3.8集成方案一
  • (转)创业家杂志:UCWEB天使第一步
  • (转)树状数组
  • ***详解账号泄露:全球约1亿用户已泄露
  • .NET 设计模式初探