JVM初识-----01章

一.虚拟机与java虚拟机的区别以及共同点

  1.虚拟机(Virtual Machine,简称VM)

是一种能够在物理计算机上模拟一台完整的计算机系统的软件。它运行在宿主操作系统之上,可以提供一个独立的运行环境,使得在不同的操作系统上运行相同的应用程序成为可能。

   2.Java虚拟机(Java Virtual Machine,简称JVM)

是一种特殊的虚拟机,它可以解释和执行Java字节码,使得开发者能够将Java程序跨平台地运行在不同的操作系统上。JVM是Java语言的核心,它负责执行Java程序的运行时环境,包括内存管理、垃圾回收等。

  3.虚拟机和Java虚拟机的共同点

是它们都是运行在宿主操作系统之上的软件,提供独立的运行环境。它们都可以模拟一台完整的计算机系统,并执行相应的应用程序。虚拟机和Java虚拟机都具有跨平台的特性,可以在不同的操作系统上运行相同的应用程序。同时,它们都提供了一些额外的功能和服务,比如内存管理、垃圾回收等。

  4.虚拟机和Java虚拟机的区别

在于它们的用途和执行的代码类型。虚拟机可以执行各种不同的代码,包括但不限于Java字节码,而Java虚拟机只能解释和执行Java字节码。此外,虚拟机还可以模拟多个操作系统和硬件平台,而Java虚拟机则主要用于运行Java程序。

二.JVM的位置 

三.java代码执行流程

  1. 代码编写:首先,我们需要编写Java代码。Java代码通常保存在以.java为文件后缀的文件中。

  2. 编译:接下来,我们需要将Java代码编译为字节码。字节码是一种中间代码,不直接运行在计算机上,而是在Java虚拟机(JVM)上运行。编译器将Java代码转换为字节码,并生成以.class为文件后缀的文件。

  3. 类加载:Java虚拟机(JVM)会将字节码加载到内存中。它会根据需要动态加载和链接类。这个过程通常是自动的,无需我们手动干预。

  4. 执行:一旦类被加载到内存中,JVM会执行其中的代码。JVM会逐条解释字节码指令,并执行相应的操作。在执行过程中,JVM会管理内存、处理异常等。

  5. 运行结果:Java代码的运行结果将根据代码逻辑和输入数据进行计算,并输出结果。结果可以在控制台上打印,保存到文件中,或者通过网络传输给其他程序。

  6. 结束:Java程序在完成所有代码的执行后,将结束运行。JVM会回收内存等资源,并将程序的退出状态返回给操作系统。

四.JVM的架构模型

 1.栈的指令集架构

是一种计算机体系结构,其中计算机的指令集被设计为操作数栈上的操作。栈是一种数据结构,具有先进后出的特点,类似于一堆盘子的堆叠。在栈的指令集架构中,计算操作数和结果都是直接在栈上进行的。

栈指令集架构与传统的寄存器指令集架构相比,有以下特点:

  1. 操作数的获取和结果的存储:栈指令集架构使用栈来存储操作数和结果。在执行指令时,操作数从栈中弹出,操作完成后,结果再次压入栈中。

  2. 操作数的顺序:栈指令集架构中,操作数的顺序与操作顺序是一致的。例如,对于加法操作,栈指令集架构将首先弹出两个操作数,执行加法操作,然后将结果压入栈中。因此,操作数的顺序是先进后出。

  3. 指令的简洁性:相对于寄存器指令集架构,栈指令集架构通常需要更少的指令来完成相同的操作。这是因为栈指令集架构利用了操作数的顺序,不需要明确指定寄存器来存储和操作数据。

  4. 存储器的使用:栈指令集架构通常需要更少的存储器来存储指令和数据。这是因为栈指令集架构中的指令和数据都存储在栈中,而不需要额外的寄存器来存储。

   2.寄存器架构

是一种计算机体系结构,其中指令操作数直接存储在寄存器中,而不是存储在内存中。这种架构被广泛应用于现代计算机系统中的中央处理器(CPU)。

在基于寄存器架构的系统中,CPU使用一组寄存器来存储临时数据和操作数。这些寄存器是与CPU紧密集成的内部存储器单元。指令操作数首先从内存加载到寄存器中,然后在寄存器中进行算术运算和逻辑操作。最后,结果可以存储回内存或复制到其他寄存器中。

基于寄存器架构的系统具有以下特点:

  1. 高速访问:由于寄存器位于CPU内部,它们的访问速度比访问内存要快得多。这大大提高了指令的执行速度。

  2. 数据传递效率高:由于操作数存储在寄存器中,指令可以直接对寄存器进行操作,而不需要通过内存进行传递。这消除了内存访问的延迟,提高了数据传递效率。

  3. 简化指令格式:由于操作数直接存储在寄存器中,指令格式可以更加简洁。指令只需指定要操作的寄存器和操作类型即可。

  4. 减少存储器带宽需求:由于操作数存储在寄存器中,而不是存储在内存中,寄存器架构可以减少对存储器带宽的需求。这使得更多的带宽可以用于其他任务,提高了系统的整体性能。

   3.为什么选择栈的指令集架构模型

      在Java虚拟机中选择栈的指令集架构模型而不选择寄存器的模型架构有几个原因:

  1. 简单性:栈指令集架构模型相对于寄存器模型来说更简单。栈架构不需要考虑寄存器的分配和管理,使得虚拟机的实现更加容易。

  2. 跨平台性:栈指令集架构模型是一种中间形式,不依赖于具体的硬件平台。这使得Java虚拟机可以在不同的操作系统和硬件上运行,具有更好的跨平台性。

  3. 安全性:由于栈指令集架构模型不直接访问寄存器,它更容易实现安全性控制。Java虚拟机可以在运行时进行访问权限检查,确保程序的安全性。

  4. 垃圾回收:栈指令集架构模型利于垃圾回收的实现。栈帧可以更容易地进行分配和回收,减少了垃圾回收的复杂性和开销。

  5. 尽管栈指令集架构模型相对于寄存器模型来说在某些方面有一定的限制,但在Java虚拟机中更适合,因为它更简单、更跨平台、更安全,并且有利于垃圾回收的实现。这使得Java虚拟机能够在各种不同的环境中高效地运行Java程序。

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【深度学习-目标检测】03 - Faster R-CNN 论文学习与总结

论文地址:Faster R-CNN: Towards Real-Time ObjectDetection with Region Proposal Networks 论文学习 1. 摘要与引言 研究背景与挑战:当前最先进的目标检测网络依赖于 区域提议(Region Proposals)来假设目标的位置&#xff0c…

CentOS系统环境搭建(二十六)——使用nginx在无域名情况下使用免费证书设置https

centos系统环境搭建专栏🔗点击跳转 文章目录 使用nginx在无域名情况下使用免费证书设置https1.获取SSL证书1.1 生成SSL密钥1.2 生成SSL证书1.3 重命名密钥文件 2.nginx配置https2.1 放证书2.2 修改nginx.conf文件2.2.1 将80端口重定向到4432.2.2 端口443配置ssl证书…

如何处理uni-app中的跨平台差异

在uni-app中,可以通过条件编译和平台判断来处理跨平台差异代码。具体步骤如下: 在uni-app项目的根目录下,找到名为manifest.json的文件,这是uni-app的配置文件。 在manifest.json文件中,可以使用条件编译指令来处理不…

Upload-Labs-Linux

题目 1.打开靶机 随便上传一个图片&#xff0c;查看get请求发现/upload/XXX.jpg 2.创建一个脚本文件 命名为flag.php.jpg,并上传 脚本文件内容&#xff1a; <?php eval($_POST[1234])?> 3上传后复制文件get请求的链接并打开蚁剑 连接密码为123 双击链接 4&#xff…

我在 VSCode 插件里接入了 ChatGPT,解决了Bug无法定位的难题

作为一名软件开发者&#xff0c;我时常面临着代码中Bug的定位和解决问题。这个过程往往既费时又充满挑战。然而&#xff0c;最近我在我的VSCode插件中接入了ChatGPT&#xff0c;这个决定彻底改变了我处理Bug的方式。 Bug&#xff1a;开发者的噩梦 在开发过程中&#xff0c;遇…

leetcode 6. N 字形变换(medium)(优质解法)

链接&#xff1a;力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台 代码&#xff1a; class Solution {public String convert(String s, int numRows) {if(numRows 1) {return s;}int lengths.length();StringBuilder retnew StringBuilder();//获取…

5.2 显示窗口的内容(二)

三,显示器几何形状管理 只有显示管理器被允许更改显示器的几何形状。窗口管理器也是显示管理器。 3.1 当显示器显示其自身内容时 当显示器显示其自身内容时,适用以下属性: 显示属性描述SCREEN_PROPERTY_PROTECTION_ENABLE表示显示目标窗口是否需要内容保护。只要显示器上…

Flink电商实时数仓(六)

交易域支付成功事务事实表 从topic_db业务数据中筛选支付成功的数据从dwd_trade_order_detail主题中读取订单事实数据、LookUp字典表关联三张表形成支付成功宽表写入 Kafka 支付成功主题 执行步骤 设置ttl&#xff0c;通过Interval join实现左右流的状态管理获取下单明细数据…

zookeeper基本使用

目录 环境搭建 单机版搭建 集群版搭建 基本语法使用 可视化客户端 数据结构 节点分类 1. 持久节点 2. 临时节点 3. 有序节点 4. 容器节点 5. TTL节点 节点状态 监听机制 watch监听 永久性watch 应用场景 1. 实现分布式锁 2. 乐观锁更新数据 应用场景总结 选…

nodejs如何使用clusster配置多cpu

Nodejs的主进程是单线程的&#xff0c;但它有多线程处理⽅案&#xff08;更准备来说是多进程⽅案&#xff09;&#xff0c;即主进程开启不同的⼦进程&#xff0c;主进程接收所有请求&#xff0c;然后将分发给其它不同的nodejs⼦进程处理。 它⼀般有两种实现&#xff1a; 1. 主进…

C++中的存储类及其实例

文章目录 0. 语法1. 自动存储类自动存储类对象的属性自动存储类的例子 2. 外部存储类extern存储类对象的属性extern存储类的例子 3. 静态存储类静态存储类的属性静态存储类的例子 4. 寄存器存储类寄存器存储类对象的属性寄存器存储类例子 5. 可变&#xff08;mutable&#xff0…

【机器学习】Boosting算法-梯度提升算法(Gradient Boosting)

一、原理 梯度提升算法是一种集成学习方法&#xff0c;它可以将多个弱分类器或回归器组合成一个强分类器或回归器&#xff0c;提高预测性能。梯度提升算法的核心思想是利用损失函数的负梯度作为残差的近似值&#xff0c;然后用一个基学习器拟合这个残差&#xff0c;再将其加到之…

MATLAB绘图

1.二维图 1.线图 要创建二维线图&#xff0c;请使用plot函数。例如&#xff0c;绘制正弦函数&#xff1a; x linspace(0,2*pi); y sin(x); plot(x,y)可以添加轴并添加标题&#xff1a; xlabel("x") ylabel("y") title("plot of the sine Functio…

二维码智慧门牌管理系统:提升社区管理智能化水平

文章目录 前言一、全方位信息录入与查询二、公安权限账户访问的公安大数据后台三、社区工作人员申请权限安装录入软件四、业主通过移动终端扫描标准地址二维码门牌自主申报录入五、系统的价值 前言 在数字化时代&#xff0c;社区管理面临着更新流动人口信息、准确录入六实相关…

AI 绘画 | Stable Diffusion 视频生成重绘

前言 本篇文章教会你如何使用Stable Diffusion WEB UI,实现视频的人物,或是动物重绘,可以更换人物或者动物,也可以有真实变为二次元。 视频展示 左边是原视频,右边是重绘视频原视频和Ai视频画面合并 教程 这里需要用到Stable Diffusion WEB UI的扩展插件ebsynth_utility…

docker安装入门及redis,minio,rabbitmq应用安装

部分笔记来自黑马课堂&#xff1a;【黑马程序员Docker快速入门到项目部署&#xff0c;MySQL部署Nginx部署docker自定义镜像DockerCompose项目实战一套搞定-哔哩哔哩】 https://b23.tv/niWEhEF 一、什么是docker&#xff1a; 快速构建、运行、管理应用的工具。--帮助我们快速部…

【中小型企业网络实战案例 二】配置网络互连互通

​【中小型企业网络实战案例 一】规划、需求和基本配置-CSDN博客 热门IT技术视频教程&#xff1a;https://xmws-it.blog.csdn.net/article/details/134398330?spm1001.2014.3001.5502 配置接入层交换机 1.以接入交换机ACC1为例&#xff0c;创建ACC1的业务VLAN 10和20。 <…

nginx反向代理服务器及负载均衡服务配置

一、正向代理与反向代理 正向代理&#xff1a;是一个位于客户端和原始服务器(oricin server)之间的服务器&#xff0c;为了从原始服务器取得内容&#xff0c;客户端向代理发送一个请求并指定目标(原始服务器)&#xff0c;然后代理向原始服务器转交请求并将获得的内容返回给客户…

南邮最优化期末复习

黄金分割法 单纯形法&#xff08;大M法&#xff09; 求min, σ找最小&#xff0c;终止条件全部大于0 θ找最小&#xff0c;且不能为负数求max, σ找最大&#xff0c;终止条件全部小于0 θ找最小&#xff0c;且不能为负数 例题 二阶段单纯形法想 分支定界法&#xff08;第二章&…

【单调队列】LeetCode1499:满足不等式的最大值

涉及知识点 单调队列 题目 给你一个数组 points 和一个整数 k 。数组中每个元素都表示二维平面上的点的坐标&#xff0c;并按照横坐标 x 的值从小到大排序。也就是说 points[i] [xi, yi] &#xff0c;并且在 1 < i < j < points.length 的前提下&#xff0c; xi &…