JVM 体系结构

news2024/9/25 1:22:47

JVM: 跨平台语言

需要不同语言由自己编译器,生成符合 JSR-292 JVM规范的字节码文件,即可在 Java 虚拟机中运行

 多语言混合编程:

  • Java 平台上的多语言混合编程正成为主流,通过特定领域的语言去解决特定领域的问题是当前软件开发应对日趋复杂的项目需求的一个方向
  • 每个应用层都将使用不同的编程语言来完成,而且,接口对每一层的开发者都是透明的,各种语言之间的交互不存在任何困难,就像使用自己语言的原生API一样方便,因为他们最终都运行在一个虚拟机之上

虚拟机:

  • 就是一台虚拟的计算机。它是一款软件,用来执行一系列虚拟计算机指令。可分为系统虚拟机和程序虚拟机
  • Visual Box、VMware 属于系统虚拟机,他们完全是对物理计算机的仿真,提供了一个可以运行完整操作系统的软件平台
  • Java 虚拟机属于程序虚拟机,专门为执行单个计算机程序而设计,在 Java 虚拟机中执行的指令我们称为 Java 字节码指令
  • 无论是系统虚拟机还是程序虚拟机,在上面运行的软件都被限制于虚拟机提供的资源中

JAVA 虚拟机

  • Java 虚拟机是一台执行 Java 字节码的虚拟计算机,它拥有独立的运行机制,其运行的 Java 字节码也威逼又 Java 语言编译而成
  • JVM 平台的各种语言可以共享 Java 虚拟机带来的跨平台性、优秀的垃圾回收期,以及可靠的即时编译器
  • Java 技术的核心就是 Java 虚拟机(JVM, Java Virtural Machine) 因为所有的 Java 程序都运行在 Java 虚拟机内部

作用:

Java 虚拟机就是二进制字节码的运行环境,负责装载字节码到其内部,解释/编译为对应平台上的机器指令执行。每一条 Java 指令,Java 虚拟机规范中都有详细定义。

特点:

  • 一次编译,到处运行
  • 自动内存管理
  • 自动垃圾回收功能

位置:

  • JVM 是运行在操作系统之上的,它与硬件没有直接的交互

整体结构:

  • HotSpot VM 是目前市面上高性能虚拟机的代表作之一
  • 它采用解释器与即时编译器并存的架构
  • Java 程序的运行性能早已脱胎换骨,已经达到了可以和 C/C++ 程序一较高下的地步

Java 代码执行流程:

JVM 的架构模型:

  • Java 编译器输入的指令流基本上是一种基于栈的指令集架构,另外一种指令集架构则是基于寄存器的指令集架构
  • 由于跨平台性的设计,Java 的指令都是根据栈来设计的。不同平台 cpu 架构不同,所以不能设计为基于寄存器的。优点是跨平台,指令集小,编译器容易实现,缺点是性能下降,实现同样的功能需要更多的指令。

基于栈式架构的特点:

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

基于寄存器架构的特点:

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

生命周期-启动:

       Java 虚拟机的启动是通过引导类加载器(bootstrap class loader) 创建一个初始类(initial class)来完成的,这个类是由虚拟机的具体实现指定的

生命周期-执行:

  • 一个运行中的 Java 虚拟机有着一个清晰的任务: 执行 Java 程序
  • 程序开始执行时他才运行,程序结束时他就停止
  • 执行一个所谓的 Java 程序的时候,真真正正的执行的是一个叫做 Java 虚拟机的进程

生命周期-退出:

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

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

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

相关文章

服务攻防-数据库安全-InfluxdbH2databaseCouchDBElasticSearch数据库漏洞复现

目录 一、Influxdb-未授权访问-Jwt 验证不当 1、Infuxdb简介 2、安全问题 3、漏洞复现 二、H2database-未授权访问-配置不当 1、H2database简介 2、安全问题 3、漏洞复现 三、CouchDB-权限绕过配合RCE-漏洞 1、CouchDB简介 2、安全问题 3、漏洞复现 四 、Elast…

《程序员面试金典(第6版)》面试题 16.15. 珠玑妙算

题目描述 珠玑妙算游戏(the game of master mind)的玩法如下。 计算机有4个槽,每个槽放一个球,颜色可能是红色(R)、黄色(Y)、绿色(G)或蓝色(B&…

为什么我选择订阅ChatGPT Plus计划?

自从ChatGPT诞生以来,它的强大功能和表现一直备受好评。作为一个长期使用者,我一直对其性能和智能感到惊叹。最近,我决定升级我的用户体验,订阅了ChatGPT Plus计划。在这篇博客中,我将向您详细介绍ChatGPT Plus的优势和…

c语言那些有趣的事 -- 猜数字游戏

📕博主介绍:目前大一正在学习c语言,数据结构,计算机网络。 c语言学习,是为了更好的学习其他的编程语言,C语言是母体语言,是人机交互接近底层的桥梁。 本章用循环去写一些题目。 让我们开启c语言…

细谈抽象类

目录 抽象类 1.抽象类是被abstract修饰的类 2.抽象类中的抽象方法 3.抽象类中可以有和普通类一样的成员变量和成员方法 4.抽象类不能被实例化 5.那么抽象类不能被实例化要它有何用??? 6.注意: 抽象类 如果一个类中没有包含足…

基于Open3D的点云处理4-旋转、平移、缩放

三维变换主要包括:平移、旋转、缩放 在open3d中,针对三维对象的变换主要有translate、rotate、scale和transform • Translate 平移 • Rotate 旋转 • Scale 缩放 • Transform 变换矩阵(4*4) mesh_tx mesh.translate((1.5, …

昆山杜克大学首届毕业生就业情况

昆山杜克大学本科教育以通识博雅课程和跨学科教育为主要特色,倡导文理兼修,并以研究为导向。所有学生入学时不分专业,他们充分地自由选课探索之后,于大二结束之前选择最适合自己的专业。首届毕业生分布于以下12个专业。 教育理念是…

《SQLi-Labs》03. Less 11~15

sqli Less-11知识点题解 Less-12题解 Less-13题解 Less-14题解 Less-15知识点题解 sqli。开启新坑。 Less-11 知识点 第十一关页面发生了变化,是账户登录页面。那么注入点在输入框。 前十关使用的是 get 请求,参数都体现在 url 上,而十一关…

测试2:基础

目录 1.软件测试的生命周期 2.描述BUG 3.定义bug的级别 1.Blocker(崩溃) 2.Critical(严重) 3、Major(一般): 4、Minor(次要): 4.BUG的生命周期 1.软件测试的生命周期 需求分析,测试计划,测试设计,测…

实施CRM目标有哪几步?如何制定CRM目标?

在当今竞争激烈的商业环境中,与客户建立持久的关系是企业重要的工作。CRM客户管理系统能有效帮助企业管理优化流程、管理客户,提高销售成功率,推动收入增长。那么您了解如何实施CRM吗?下面说说实施CRM目标是什么,如何设…

Python小姿势 - # 字典(Dictionary)

字典(Dictionary) 字典是另一种可变容器模型,且可存储任意类型对象。 字典的每个键值 keyvalue 对用冒号 : 分割,每个对之间用逗号 , 分割,整个字典包括在花括号 {} 中 ,格式如下所示: d {key1 : value1, …

CSDN 周赛 50 期

CSDN 周赛 50 期 1、题目名称:订班服2、题目名称:异或和3、题目名称:零钱兑换4、题目名称:小艺照镜子小结 1、题目名称:订班服 小A班级订班服了! 可是小A是个小糊涂鬼,整错了好多人的衣服的大小…

2022年NOC大赛编程马拉松赛道复赛图形化高年级A卷-正式卷,包含答案

目录 单选题: 多选题: 编程题: 下载打印文档做题: 2022年NOC大赛编程马拉松赛道复赛图形化高年级A卷-正式卷,包含答案 单选题:<

搭建Linux依赖环境

目录 1、jdk&#xff08;基于yum进行安装 &#xff09; 2、Tomcat &#xff08;手动下载安装&#xff09; 3、MariaDB&#xff08;基于yum进行安装&#xff09; 安装 启动 测试连接 1、jdk&#xff08;基于yum进行安装 &#xff09; 可以使用yum list | grep [关键词…

js基础1

一.js中的变量 a.var,let ,const的异同 1.var var在不进行初始化的条件下的值为undefined,它的作用域是函数作用域&#xff0c;在使用var在函数的内部定义一个变量的时候&#xff0c;意味着该变量在退出前进行销毁。并且它可以进行变量提升。 例子&#xff1a; function f…

操作系统概述(一、并发)

系列文章目录 文章目录 系列文章目录前言定义 一、操作系统发展史1940s的程序1950s的计算机1960s的计算机1970s 基本和现代一样了 others 二、程序状态模型从不同视角看程序&#xff1a; 操作系统上的程序 三、线程库四、程序并发五、自旋锁与互斥锁的实现自旋锁的使用场景 六、…

21 brk 的初始化

前言 这个问题是 衍生自 malloc 的问题的调试 malloc 虚拟内存分配的调试(1) malloc 虚拟内存分配的调试(2) 假设我们使用 gdb 或者 gdbserver 启动调试的该测试用例对应的可执行程序 我们可以观察到的现象是 p1, p2, p3 的地址是固定的, 均是类似于 elf 中最大的虚拟地…

基于vue3+pinia2仿ChatGPT聊天实例|vite4.x仿chatgpt界面

使用vue3pinia2开发仿制chatgpt界面聊天实例Vue3-Chatgpt 基于Vue3.xPinia2VueRouterVue3-Markdown等技术构建仿ChatGPT网页端聊天程序。支持经典分栏界面布局、light/dark模式、全屏半屏显示、Markdown语法解析、侧边栏隐藏等功能。 技术框架 编辑工具&#xff1a;Cursor框架…

精炼计算机网络——物理层(二)

文章目录 前言2.4信道复用技术2.4.1 频分复用、时分复用和统计时分复用2.4.2 波分复用2.4.3 码分复用 2.5 数字传输系统2.6 带宽接入技术2.6.1 ADSL技术2.6.2 光纤同轴混合网&#xff08;HFC网&#xff09;2.6.3 FTTx技术 总结 前言 上篇文章&#xff0c;我们初步了解了物理层…

国考省考结构化面试:应急应变事件处理,宏观全面把控,措施有效具体,着眼当前放眼未来,标本兼治

国考省考结构化面试&#xff1a; 2022找工作是学历、能力和运气的超强结合体! 公务员特招重点就是专业技能&#xff0c;附带行测和申论&#xff0c;而常规国考省考最重要的还是申论和行测&#xff0c;所以大家认真准备吧&#xff0c;我讲一起屡屡申论和行测的重要知识点 遇到寒…