JVM(Java虚拟机)----5/19

本文详细介绍了Java虚拟机(JVM)的概念及其重要组成部分,包括指令系统、寄存器、栈结构、碎片回收堆和存储区等。此外还探讨了JVM如何实现Java程序的跨平台运行。

定义:

Java虚拟机(Java Virtual Machine 简称JVM)是运行所有Java程序的抽象计算机,是Java语言的运行环境,它是Java 最具吸引力的特性之一。

 

包括:

Java虚拟机包括一套字节码指令集、一组寄存器、一个栈、一个垃圾回收堆和一个存储方法域。

 

 

特点:

Java语言的一个非常重要的特点就是与平台的无关性。而使用Java虚拟机是实现这一特点的关键。

 

使用主体:

Java虚拟机是Java语言底层实现的基础。

 

规格:

JVM定义了控制Java代码解释执行和具体实现的五种规格,它们是:

*JVM指令系统

*JVM寄存器

*JVM栈结构

*JVM碎片回收堆

*JVM存储区

 

*JVM指令系统:

JVM指令系统同其他计算机的指令系统极其相似。Java指令也是由操作码和操作数两部分组成。操作码为8位二进制数,操作数进紧随在操作码的后面,其长度根据需要而不同。

 

*JVM寄存器:

JVM只设置了4个最为常用的寄存器。

它们是:

pc程序计数器

optop操作数栈顶指针

frame当前执行环境指针

vars指向当前执行环境中第一个局部变量的指针

所有寄存器均为32位。pc用于记录程序的执行。optop,framevars用于记录指向Java 栈区的指针。

 

*JVM栈结构:

作为基于栈结构的计算机,Java栈是JVM存储信息的主要方法。JVM得到一个 Java字节码应用程序后,便为该代码中一个类的每一个方法创建一个栈框架,以保存该方法的状态信息。

每个栈框架包括以下三类信息:局部变量,执行环境,操作数栈。

局部变量:

局部变量用于存储一个类的方法中所用到的局部变量。vars寄存器指向

该变量表中的第一个局部变量。

执行环境:

执行环境用于保存解释器对Java字节码进行解释过程中所需的信息。

它们是:上次调用的方法、局部变量指针和操作数栈的栈顶和栈底指针。

执行环境是一个执行一个方法的控制中心。

例如:如果解释器要执行iadd(整数加法),首先要从frame寄存器中找 到当前执行环境,而后便从执行环境中找到操作数栈,从栈顶弹出两个整数进 行加法运算,最后将结果压入栈顶。

操作数栈:

操作数栈用于存储运算所需操作数及运算的结果。

 

*JVM碎片回收堆:

Java类的实例所需的存储空间是在堆上分配的。解释器具体承担为类实例分配空间的工作。解释器在为一个实例分配完存储空间后,便开始记录对该实例所占用的内存区域的使用。一旦对象使用完毕,便将其回收到堆中。Java语言中,除了new语句外没有其他方法为一对象申请和释放内存。

 

*JVM存储区:

JVM有两类存储区:常量缓冲池和方法区。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值