jvm

JVM是一种用于计算机设备的规范它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。
几乎所有的Java类型检查都是在编译时完成的。
规格
JVM的设计目标是提供一个基于抽象规格描述的计算机模型,为解释程序开发人员提供很好的灵活性,同时也确保Java代码可

在符合该规范的任何系统上运行。JVM对其实现的某些方面给出了具体的定义,特别是对Java可执行代码,即字节码的格式给

出了明确的规格。这个规格包括操作码和操作数的语法和数值、标识符的数值表示方式、以及Java类文件中的Java对象、常

量缓冲池在JVM的存储映像。这些定义为JVM节水开发人员提供了所需的信息和开发环境。
JVM定义了控制Java代码解释执行和具体实现的五种规格,它们是:
JVM指令系统
JVM寄存器
JVM栈结构
JVM碎片回收堆
JVM存储区
原理
JVM是Java的核心和基础,在Java编译器和os平台之间的虚拟机处理器。它是一种基于下层的操作系统和硬件平台并利用软件

方法来实现的抽象的计算机,可以在上面执行Java的字节码程序。
Java编译器只需面向JVM,生成JVM能理解的代码或字节码文件。Java源文件经编译器,编译成字节码程序,通过JVM将每一条

指令翻译成不同平台机器码,通过特定平台运行。
JVM执行程序的过程
加载class文件
管理并分配内存
执行垃圾收集
JRE(Java运行环境)包含JVM的Java程序的运行环境
JVM是Java程序运行的容器,但是他同时也是操作系统的一个进程,因此他也有他自己的运行的生命周期也有自己的代码和数

据空间。
JVM在整个jdk中处于最底层负责与操作系统的交互用来屏蔽操作系统环境,提供一个完整的Java运行环境因此也叫虚拟机计

算机操作系统装入JVM是通过jdk中java.exe来完成,通过下面4步完成JVM环境。
创建JVM装载环境和配置
装载JVM.dll
初始化JVM.dll并挂接到JNIENV(JNI调用接口)实例
调用JNIEnv实例装载并处理cass类。
指令系统
jvm指令系统同其他计算机的指令系统极其相似。Java指令也是有操作码和操作数两部分组成。操作码为8位二进制数,操作

数紧随在操作码后面,其长度根据需要而不同。操作码用于指定一条指令操作性质
JVM只设置了4个最为常见用的寄存器
pc程序计数器
optop操作数栈顶指针
frame当前执行环境指针
vars指向当前执行环境中第一个局部变量的指针
所有寄存器均为32位。pc用于记录程序的执行。optop,frame和vars用于记录指向java栈区的指针。
栈结构
作为基于栈结构的计算机,Java栈是jvm存储信息的主要方法。当jvm得到一个Java字节码应用程序后,便为该代码中一个类

的每一个方法创建一个栈框架,以保存该方法的状态信息。每个栈框架包括以下三类信息:
局部变量
执行环境
操作数栈
局部变量用于存储一个类的方法所用到的局部变量,vars寄存器指向该变量表中的第一个局部变量。
执行环境用于保存解释器对Java字节码进行解释过程所需的信息。
操作数栈用于存储运算所需操作数及运算的结果。
碎片回收
Java类的实例所需的存储空间是在堆上分配的。解释器具体承担为类实例分配空间的工作。解释器在为一个实例分配完存储

空间后,便开始记录对该实例所占用的内存区域的使用。一旦对象使用完毕,便将其回收到堆中。在Java语言中,除了new语

句外设有其他方法为一对象申请和释放内存。对内存进行释放和回收的工作是由Java运行系统承担的。

存储区
JVM有两类存储区:常量缓冲池和方法区。常量缓冲池用于存储类名称、方法和字段名称以及常量。方法区则用于存储Java方

法的字节码。对于这两种存储区域具体实现方式在JVM规格中没有明确规定。这使得Java应用程序的存储布局必须在运行过程

中确定,依赖于具体平台的实现方式。JVM是为了Java字节码定义的一种独立于具体平台的规格描述,是Java平台独立性的基

础。JVM还存在一些限制和不足,有待于进一步的完善,但无论如何,JVM的思想是成功的。
对比分析:如果把Java原程序想象成我们的C++原程序,Java原程序编译后生成的字节码就相当于C++原程序编译后的80x86的

机器码(二进制程序文件),JVM虚拟机相当于80x86计算机系统,Java解释器相当于80x86cpu。在80x86cpu上运行的是机器

码,在Java解释器上运行的是Java字节码。Java解释器相当于运行Java字节码的CPU,但该cpu不是通过硬件实现的,而是用

用软件实现的。java解释器实际上就是特定的平台下的一个应用程序。只要实现了特定平台下的解释器程序,Java字节码就

能通过解释器程序在该平台下运行,这是Java跨平台的根本。当前,并不是在所有的平台下都有相应Java解释器程序,这也

是Java并不能在所有的平台下都能运行的原因,它只能在已实现了Java解释器程序的平台下运行。
运行数据
JVM定义了若干个程序执行期间使用的数据区域。这个区域里的一些数据在JVM启动的时候创建,在JVM退出的时候销毁。而其

他的数据依赖于每一个线程,在线程创建时创建,在线程退出时销毁。分别有程序计数器,堆,栈,方法区,运行时常量池


体系结构
JVM可以由不同的厂商来实现。由于厂商的不同必然导致JVM在实现上的一些不同,然而JVM还是可以实现跨平台的特性,就要

归功于设计JVM时的体系结构了。一个JVM实例的行为不光是它自己的事,还涉及到它的子系统、存储区域、数据类型和指令

这些部分,它们描述了JVM的一个抽象的内部体系结构,其目的不光规定实现JVM时它内部的体系结构,更重要的是提供了一

种用于严格定义方式,用于严格定义实现时的外部行为。每个JVM都有两种机制,一个是装载具有合适名称的类(类或者接口

)叫做类装载子系统;另外的一个负责执行包含在已装载的类或接口中的指令,叫做运行引擎。每个JVM又包括方法区、堆、

Java栈、程序计数器和本地方法栈这五个部分,这几个部分和类装载机制与运行引擎机制一起组成的体系结构图

【博士论文复现】【阻抗建模、验证扫频法】光伏并网逆变器扫频与稳定性分析(包含锁相环电流环)(Simulink仿真实现)内容概要:本文档是一份关于“光伏并网逆变器扫频与稳定性分析”的Simulink仿真实现资源,重点复现博士论文中的阻抗建模与扫频法验证过程,涵盖锁相环和电流环等关键控制环节。通过构建详细的逆变器模型,采用小信号扰动方法进行频域扫描,获取系统输出阻抗特性,并结合奈奎斯特稳定判据分析并网系统的稳定性,帮助深入理解光伏发电系统在弱电网条件下的动态行为与失稳机理。; 适合人群:具备电力电子、自动控制理论基础,熟悉Simulink仿真环境,从事新能源发电、微电网或电力系统稳定性研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①掌握光伏并网逆变器的阻抗建模方法;②学习基于扫频法的系统稳定性分析流程;③复现高水平学术论文中的关键技术环节,支撑科研项目或学位论文工作;④为实际工程中并网逆变器的稳定性问题提供仿真分析手段。; 阅读建议:建议读者结合相关理论教材与原始论文,逐步运行并调试提供的Simulink模型,重点关注锁相环与电流控制器参数对系统阻抗特性的影响,通过改变电网强度等条件观察系统稳定性变化,深化对阻抗分析法的理解与应用能力。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值