什么是JVM?

目录

1、JVM的学习内容

2、JVM概述

3、字节码

4、虚拟机

5、HotSpot VM

6、Java代码的执行流程

1、JVM的学习内容

JVM大概分为三部分:

  1. 内存与垃圾回收
  2. 字节码与类的加载
  3. 性能监控与调优

2、JVM概述

JVM是运行在不同操作系统上的,和硬件没有直接交互,只是负责和操作系统交互。

JVM的通用性

JVM不只能运行java生成的字节码文件,还可以运行很多其他编程语言生成的字节码文件。

在Java7发布时,实现了在Java虚拟机平台上运行非Java语言编写的程序。

JVM不关心运行在其中的程序到底是用哪种语言编写的,它只关心字节码文件,也就是说,JVM具有语言无关性

只要一个字节码文件包含JVM的指令集、符号表和其他信息,它就能被JVM识别、装载并运行。

可以说,Java不是最强大的语言,但JVM是最强大的虚拟机

JVM的作用

JVM就是二进制字节码的运行环境,负责装载字节码到其内部,解释或编译为对应平台上的机器指令执行。

每一条java指令,JVM规范中都有详细定义,比如怎么读取操作数,怎么处理操作数,处理的结果放在哪里等。

JVM的特点

  1. 一次编译,到处运行
  2. 自动内存管理
  3. 自动垃圾回收

JVM如何实现跨平台

其实很简单,在下载JDK时,需要选择你的操作系统型号,而JDK包含JRE,JRE包含JVM。

各个操作系统对应的JVM也是有区别的

3、字节码

Class字节码文件的内容

Class文件中,包含了JVM指令集、符号表,以及一些其他辅助信息。

字节码文件和java语言的关系

平时说的java字节码,指的是java语言编译生成的字节码。

但是准确地说,任何能在JVM平台上执行的字节码,格式其实是一样的,所以不应该叫java字节码,应该叫JVM字节码。

字节码文件和JVM的关系

不同的编译器,可以编译出相同格式的字节码文件,字节码文件也能在不同的JVM上运行。

JVM与java语言的关系

JVM和java语言其实没有必然的联系,因为JVM只与特定的二进制文件格式:Class字节码文件相关联。

4、虚拟机

虚拟机的分类

大体上,虚拟机可以分为两类:

  • 系统虚拟机
  • 程序虚拟机

系统虚拟机

例如Vmware,它们是对物理计算机的仿真,提供了一个可以运行完整操作系统的软件平台。

程序虚拟机

例如JVM,专门为执行单个计算机程序而设计。

虚拟机的特征

不管哪种虚拟机,在上面运行的软件都被限制于虚拟机提供的资源中。

为什么要管理内存

如果不去定期回收一些内存,程序运行到最后就会非常卡顿,不合理

内存管理方面

Java提供了JVM,负责帮助我们管理内存。

而c++需要程序员手动管理内存,如果不熟悉,就容易出很多问题。

5、HotSpot VM

HotSpot VM是Java自带的高性能虚拟机,被Open JDK和Oracle JDK使用。

它采用解释器与即时编译器并存的架构。

6、Java代码的执行流程

源程序经过编译,得到一个或多个字节码文件,每个字节码文件对应一个具体的Java类。在对应操作系统的JVM上运行。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

荔枝派Zero(全志V3S)基于QT实现在LCD显示图片

文章目录 前言一、配置 buildroot 及编译二、写 QT 代码三、编译可执行文件四、拷贝到 SD 卡五、上板子测试六、资源自取 前言 有这样一个需求,通过配置 QT,在 linux 下实现显示我所想要显示的图片,实现的方式是我可以在命令行将图片的路径作…

数据库单实例升级

一、单实例环境,全时长二个半钟多。详细图文说明到这下载 1、停止所有oracle相关进程。 Emctlstop dbconsole Isqlplusctl stop Lsnrctl stop sqlplus /nolog sql>conn /as sysdba Connectedtoanidleinstance. sql>shutdown 然后,冷备份下数据库cp…

第十二章 Transform组件(下)

上一章节中我们介绍了Transform组件的属性和方法。我们发现 Transform 中有right,up和forward,而 Vector3 类中也有right,up和forward,他们是一回事嘛?我们使用Forward来说明两者之间的区别。我们知道,改变…

nodejs+vue+elementui学生毕业生离校系统

学生毕业离校系统的开发过程中。该学生毕业离校系统包括管理员、学生和教师。其主要功能包括管理员:首页、个人中心、学生管理、教师管理、离校信息管理、费用结算管理、论文审核管理、管理员管理、留言板管理、系统管理等,前台首页;首页、离…

软件测试的测试用例

1.白盒和黑盒测试: 黑盒测试:把代码看成一个黑盒子,只关心输入和输出结果之间的关系 产品功能是否符合要求; 白盒测试:能够看到代码本身,针对代码本身进行测试,测试代码本身的逻辑是否符合规范。 2.测试用…

SOFA Weekly|SOFAArk 社区会议预告、Layotto 社区会议回顾、社区本周贡献

SOFA WEEKLY | 每周精选 筛选每周精华问答,同步开源进展 欢迎留言互动~ SOFAStack(Scalable Open Financial Architecture Stack)是蚂蚁集团自主研发的金融级云原生架构,包含了构建金融级云原生架构所需的各个组件&am…

c#笔记-内置类型

内置类型 内置类型是一些有关键字表示的类型。关键字具有非常高的优先级,可以让你在没有别的配置的情况下, 只要用的是c#就可以使用。这也意味着这些类型是非常重要,或是基本的东西。 整数:byte, sbyte, short, ushort, int, ui…

展望Flink各版本及新特性

展望Flink各版本及新特性 一 Flink 1.9 版本1.1 细粒度批作业恢复1.2 State Processor API1.3 Stop-with-Savepoint1.4 新 Blink SQL 查询处理器预览1.5 Table API / SQL 的其他改进 二 Flink 1.10 [重要版本 : Blink 整合完成]2.1 内存管理及配置优化2.2 统一的作业提交逻辑2.…

【WCH】CH32F203基于内部RTC+I2C SSD1306 OLED时钟和温度显示

【WCH】CH32F203基于内部RTCI2C SSD1306 OLED时钟和温度显示 📌相关篇《【WCH】CH32F203基于内部RTC时钟I2C SSD1306 OLED显示》📺显示效果: ✨主要是在其基础 上增加温度显示,温度数据来源于DS18B20,更换了OLED驱动显…

大型Saas系统的权限体系设计(二)

X0 上期回顾 上文《大型Saas系统的权限体系设计(一)》提到2B的Saas系统的多层次权限体系设计的难题,即平台、平台的客户、客户的客户,乃至客户的客户的客户如何授权,这个可以通过“权限-角色-岗位”三级结构来实现。 但这个只是功能权限&am…

Apache安装与基本配置

1. 下载apache 地址:www.apache.org/download.cgi,选择“files for microsoft windows”→点击”ApacheHaus”→点击”Apache2.4 VC17”,选择x64/x86,点击右边download下面的图标。 2. 安装apache (1)把…

【LeetCode】1000题挑战(220/1000)

1000题挑战 没有废话,直接开刷! 目录 1000题挑战 没有废话,直接开刷! 第一题:119. 杨辉三角 II - 力扣(Leetcode) 题目接口 解题思路 代码: 过过过过啦!&#x…

【软考备战·希赛网每日一练】2023年5月2日

文章目录 一、今日成绩二、错题总结第一题 三、知识查缺 题目及解析来源:2023年05月02日软件设计师每日一练 一、今日成绩 二、错题总结 第一题 解析: 三、知识查缺 复习 流水线技术。序列图(顺序图)用于展现系统中一个用例和多…

【五一创作】[论文笔记]图片人群计数CSRNet,Switch-CNN

2018(有代码)_CSRNet (10次) 应用最最广泛的:e, is the most widely used while working with counting problems. 2018_CVPR——CSRNet: Dilated Convolutional Neural Networks for Understanding the Highly Congested Scenes https://arxiv.org/abs/1802.100…

第八章 集合函数

文章目录 前言一、聚合函数介绍1 、AVG (平均值) 和SUM (求和)函数2 、MIN(最小值)和MAX(最大值)函数3 、COUNT函数问题:用count(*),count(1),count(列名)谁好呢? 二、G…

嵌入式Sqlite数据库【基本语法、Sqlite-JDBC、嵌入到Java程序】

目录 前言 基本介绍 Sqlite 对比 MySQL 字段类型 语法 创建表 插入数据 更新数据 查询数据 删除数据 查看建表语句 Sqlite-JDBC 嵌入到Java程序 前言 最近在用JavaFX做一个桌面软件需要用到数据库,但MySQL这种数据库明显只能本地访问,把软…

ChatGPT能让智能客服更上一层楼么?

‍数据智能产业创新服务媒体 ——聚焦数智 改变商业 现实生活中,智能客服的身影已随处可见。 随着全球经济从以产品为主向以服务为主转型,体验经济也快速发展。客户服务逐渐成为一个独立的产业,而客服中心也成为所有企业的基本部门。然而&am…

利用snpEff对基因型VCF文件进行变异注释的详细方法

利用snpEff对VCF文件进行变异注释 群体遗传研究中,在获得SNP位点后,我们需要对SNP位点进行注释,对这些SNP位点进行更深的了解。 snpEff是一个用于对基因组单核苷酸多态性(SNP)进行注释的软件,snpEff软件可以用于对VCF文件进行变异注释&…

Packet Tracer - 配置和验证小型网络

Packet Tracer - 配置和验证小型网络 地址分配表 设备 接口 IP 地址 子网掩码 默认网关 RTA G0/0 10.10.10.1 255.255.255.0 不适用 G0/1 10.10.20.1 255.255.255.0 不适用 SW1 VLAN1 10.10.10.2 255.255.255.0 10.10.10.1 SW2 VLAN1 10.10.20.2 255.25…

基于AI技术的智能考试系统设计与实现(论文+源码)_kaic

摘 要 随着当今世界互联网信息技术的飞速发展,互联网在人们生活中的应用越来越广泛,在线考试成为选拔人才的重要方法。实现一个基于AI技术的智能考试系统,该系统采用Java编程语言实现。通过使用自然语言处理技术和机器学习算法,该…