2. JVM的架构模型和生命周期

一、前言

Java 编译器输入的指令流是一种基于栈的指令集架构,还有另一种指令集架构是基于寄存器的指令集架构。

二、两种架构之前的区别

基于栈的架构特点:

  • 设计和实现更简单,适用于资源受限的系统;
  • 避开了寄存器的分配难题:使用零地址指令方式分配。
  • 指令流中的指令大部分是零地址指令,其执行过程依赖于操作栈。指令集更小,编译器容易实现。
  • 不需要硬件支持,可移植性更好,更好实现跨平台。

基于寄存器的架构特点:

  • 典型的应用是x86的二进制指令集:比如传统的 PC,以及 Android 的 Davlik 虚拟机
  • 指令集架构则完全依赖于硬件,可移植性差
  • 性能优秀,执行效率高
  • 花费更少的指令完成一项操作
  • 在大部分情况下,基于寄存器架构的指令集都是以一地址指令,二地址指令,三地址指令为主。

这时候真后悔当初上学时,计算机组成原理这些大课没好好学,都是一些熟悉的名词在耳边绕,但是就是不理解他在讲什么东西。

三、JVM的生命周期

虚拟机的启动

类加载器(bootstrap class loader) 创建初始类(initial class)来完成,这个类由虚拟机的具体实现指定。

虚拟机的执行

  • 执行Java程序
  • 程序开始执行时它才运行,程序结束时他就停止
  • 执行一个Java程序,真正在执行的是一个叫Java虚拟机的进程

虚拟机的退出

  • 程序正常执行结束
  • 程序执行过程中遇到异常或者错误而异常终止
  • 由于操作系统错误导致虚拟机进程终止
  • 某些线程调用 Runtime 类或者 System 类的 exit 方法,或 Runtime 类的 halt 方法,并且 Java 安全管理器也允许这次 exit 或 halt 操作
  • JNI(Java Native Interface)规范描述了用 JNI 来加载或者卸载 Java 虚拟机时,Java 虚拟机退出情况

四、总结

通过上面的一些比较,虽然暂时还不明白底层的实现逻辑,但是先get到一点,因为不同的CPU架构,寄存器的设计是不一样的,所以不能设计为基于寄存器的方式,否则无法兼容。基于栈的方式,规避了寄存器的限制,但是指令集更小,所以完成一个操作需要执行的指令就更多,自然也就导致执行效率相比于寄存器架构低。

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

Flutter3.22.2中SliverAppBar设置背景色滑动显示颜色错误

在使用Flutter项目开发中,可能会有页面需要滑动收起标题栏的效果,一般都会使用SliverAppBar来实现,当项目的Flutter的SDK版本升级到3.4后,发现使用了SliverAppBar的页面,在滑动过程中,标题栏和状态栏的颜色…

vim 编辑器

1. 学习 vim 的目的 在工作中,要对 服务器 上的文件进行 简单 的修改,可以使用 ssh 远程登录到服务器上,并且使用 vim 进行快速的编辑即可常见需要修改的文件包括:源程序配置文件,例如 ssh 的配置文件 ~/.ssh/config …

瑞派宠物医院轮值总裁胡文强受邀出席第三届宠物产业大会

中国宠物产业蓬勃发展,成为推动国民经济持续增长的重要力量,宠物市场规模持续扩大。为进一步推动宠物产业的创新驱动,加强产业上下游深度交流和协同发展,中国畜牧业协会宠物产业分会于2024年10月15-17日在浙江杭州召开第三届宠物产…

Linux云计算 |【第五阶段】CLOUD-DAY7

主要内容: 在kubernetes平台上理解掌握各种控制器的用法:掌握kubectl管理命令、掌握POD原理、掌握集群调度的规则、熟悉控制器资源文件; 一、kubectl 常用命令 Kubectl是用于控制Kubernetes集群的命令行工具; - 格式&#xff1…

[java][框架]springMVC(1/2)

目标 知道SpringMVC的优点编写SpringMVC入门案例使用PostMan发送请求掌握普通类型参数传递掌握POJO类型参数传递掌握json数据参数传递掌握响应json数据掌握rest风格快速开发 一、SpringMVC简介 1 SpringMVC概述 问题导入 SpringMVC框架有什么优点? 1.1 Spring…

dns主从服务器的配置

主从dns服务器上都要: 关闭防火墙: [rootlocalhost ~]# systemctl stop firewalld [rootlocalhost ~]# setenforce 0 挂载和下载bind [rootlocalhost ~]# mount /dev/sr0 /mnt [rootlocalhost ~]# dnf install bind -y 主服务器配置: [rootlo…

【大咖云集,院士出席 | ACM独立出版】第四届大数据、人工智能与风险管理国际学术会议 (ICBAR 2024,11月15-17日)--冬季主会场

第四届大数据、人工智能与风险管理国际学术会议 (ICBAR 2024)--冬季主会场 2024 4th International Conference on Big Data, Artificial Intelligence and Risk Management 官方信息 会议官网:www.icbar.net 2024 4th International Conference on Big Data, Art…

linphone sdk sip音视频通话高级教程

本文主要基于c接口讲解linphone结合freeswitch在多平台的运用。大纲如下 linphone sdk下载地址sdk导入本文基于console程序演示,qt工程也行简单的音频呼叫,sip服务器使用freeswitch音频设置(设备、增益、铃声、回声消除、编码等)视频呼叫 默认有vp8 这里导入下h264视频设置(…

【Jenkins】 上传docker包并推送到远程仓库

文章目录 1. 前置工作安装和配置Jenkins设置Docker环境 2. 相关配置流程创建项目配置参数 1. 前置工作 安装和配置Jenkins 在开始使用Jenkins之前,需要确保已经安装和配置了Jenkins服务器。您可以按照以下步骤进行安装和配置: 下载Jenkins并安装&…

OBOO鸥柏丨传媒广告行业的创新应用解决数字技术短板

在新媒体文化传媒广告行业,如何吸引受众的注意力并有效传达信息一直是行业技术型数字化媒体转型关注的重点。OBOO鸥柏立式广告机作为这一领域的创新显示产品新技术,搭载VS6.0/满天星(MTSTAR)信息发布系统网络云平台技术科技,以其独特的技术优…

windows家庭版安装docker环境步骤-家庭版

1.家庭版没有虚拟化设置,下面代码保存到bat后缀文件,然后管理员权限执行 pushd "%~dp0" dir /b %SystemRoot%\servicing\Packages\*Hyper-V*.mum >hyper-v.txt for /f %%i in (findstr /i . hyper-v.txt 2^>nul) do dism /online /nore…

SQL Server身份验证模式

SQL Server是一个广泛使用的关系数据库管理系统,通常使用两种身份验证模式:Windows身份验证和SQL Server身份验证。理解这些身份验证方式的概念与更改方式的操作,对于数据库管理员和开发者至关重要。本文将详细介绍身份验证方式的概念以及如何…

蓝桥杯-网络安全比赛题目-遗漏的压缩包

小蓝同学给你发来了他自己开发的网站链接, 他说他故意留下了一个压缩包文件,里面有网站的源代码, 他想考验一下你的网络安全技能。 (点击“下发赛题”后,你将得到一个http链接。如果该链接自动跳转到https,…

【Git】Liunx环境下Git的使用:“克隆,提交,推送“

目录 一、常用参数 二、我们为什么要使用Git? 三、创建远程仓库 第一步:创建对应代码托管平台账号。 第二步:在托管平台创建仓库 第三步:完善仓库内容(选择性使用) 开源和私有 四、克隆远程仓库到本…

entos7离线安装xrdp和图形化桌面

1、查看Linux系统环境 cat /etc/os-release NAME"CentOS Linux" VERSION"7 (Core)" ID"centos" ID_LIKE"rhel fedora" VERSION_ID"7" PRETTY_NAME"CentOS Linux 7 (Core)" ANSI_COLOR"0;31" CPE_NAME…

Qt学习笔记(三)网络编程

系列文章目录 Qt开发笔记(一)Qt的基础知识及环境编译(泰山派) Qt学习笔记(二)Qt 信号与槽 Qt学习笔记(三)网络编程 文章目录 系列文章目录前言一、Qt网络模块二、TCP网络的编写2.1 …

uni-app发起请求以及请求封装,上传及下载功能(六)

文章目录 一、发起网络请求1.使用及封装2. https 请求配置自签名证书3.拦截器 二、上传下载1.上传 uni.uploadFile(OBJECT)2. 下载 uni.downloadFile(OBJECT) 一、发起网络请求 uni-app中内置的uni.request()已经很强大了,简单且好用。为了让其更好用,同…

快速理解软件开源协议,以及如何选择协议

一、开源协议介绍 开源协议,是一个用来对软件二次分发进行限制和规范的条文规定,用户在使用他人开源代码的时候,可以根据作者选取的LICENSE获知自己能够有哪些权利去处理从原作者哪里拿到的代码。开源协议是开源社区运作的基石,在…

【读书笔记/深入理解K8S】集群网络

前言 上一章讲了集群控制器的一个大概的原理,这一章讲一下集群网络。网络是集群通信的载体,因为该书是阿里云团队出品的,所以也以阿里云的集群网络方案为例,其他云厂商的网络集群方案一般来说也大同小异。所以通过本章的学习&…

【计算机网络】章节 知识点总结

一、计算机网络概述 1. 计算机网络向用户提供的两个最重要的功能:连通性、共享 2. 因特网发展的三个阶段: 第一阶段:从单个网络 ARPANET 向互联网发展的过程。1983 年 TCP/IP 协议成为 ARPANET 上的标准协议。第二阶段:建成三级…