`

java 虚拟机字节码执行引擎

    博客分类:
  • JAVA
 
阅读更多

一 运行时栈帧结构 : 栈帧分配多少内存,与运行时无关

1: 局部变量表 : 容量以slot 槽为单位

一个slot 占用32位长度的内存空间,可以存的类型有boolean、byte、char、short、int、float、reference、retuanaddress .

reference 类型 : 表示对象引用、returnaddress 类型 指向一条字节码指令的地址

二个slot 可以存long double 类型

 

2: 操作数栈 : 后入先出

当一个方法刚刚开始执行的时候,这个方法的操作数栈是空的,在方法的执行过程中,会有各种字节码指令在操作数栈中,入栈和出栈。

 

3: 动态链接

栈帧中包含一个指向运行时常量池中该栈帧所属方法的引用,持有这个引用是为了支持方法调用过程中的动态链接

class 文件常量池中存在大量的符号引用,字节码中的方法调用指令就是用常量池中指向方法的符号引用作为参数。

静态解析: 符号引用会在类加载时转化为直接引用

动态链接: 每次运行时转化再转化为直接引用

 

4: 方法返回地址

1、方法退出后,都需要返回到方法被调用的位置,程序才能继续执行。

 

二、方法调用 : 任务是确定被调用方法的版本,暂时还不涉及方法内部的具体运行过程。

 

1、解析(静态)将class文件符号引用转化为直接引用 (因为符号引用不是实际的入口地址)

有两种方法, 静态方法: 与类型直接关联,私有方法: 外部不可被访问 ,都它们都适合在类加载阶段解析。

解析调用一定是个静态的过程,在编译期间就完全确定。

 

2、分派 (动态和静态): 分派调用将会揭示多态性的一些最基本体现,重载和重写 ,关心虚拟机如何确定正确的目标方法。

(1) 静态分派 (重载方法): 依赖静态类型来定位方法执行版本的分派动作

   
(2)动态分派 (重写): 依赖实际类型来定位方法执行 版本的分派动作

  通过在方法区上的虚方法表来实现动态分派

   

(3)方法的接受者和方法参数(宗量): 单分派是根据一个宗量,多分派多个

 

3、动态语言 : 它的类型检查过程时在运行期而不是编译期。

 

 

 

三、问题 虚拟机是如何执行方法中的字节吗指令的?下面是几种方法

基于栈的字节码解释执行引擎 

1、 解释执行

 

基于栈的指令集与基于寄存器的指令集

1+1 

1、基于栈的指令集

iconst_1 

iconst_1

iadd

istore_0

 

2、基于寄存器

mov eax,1

add  eax,1

 

3、基于栈的解释器执行过程 

 

列子源码

public int calc(){

    int a = 100;

    int b = 200;

    int c  = 300;

  return (a+b) *c

}

 

字节吗

public int calc(){

code :

stack =2,locals=4,args_size=1

 

0: bipush 100

2: istore_1

3: sipush 200

6: istore_2

7: sipush 300

10: istore_3

11: iload_1

12: iload_2

13: iadd

14:iload_3

15:imul

16:ireturn

 

 

 

 

分享到:
评论

相关推荐

    Java虚拟机规范中文版(JavaSE7).pdf

    Java虚拟机(JVM)是Java编程语言的核心组成部分,它是一种抽象的计算设备,能够运行Java字节码。Java虚拟机规范(Java SE 7版)是定义JVM行为的官方文档,确保所有Java平台的实现遵循相同的规则,以提供跨平台的...

    深入java虚拟机.pdf

    Java 虚拟机的体系结构由多个子系统组成,包括类加载器子系统、执行引擎、数据区等。类加载器子系统负责加载程序中的类型(类和接口),并赋予唯一的名字。执行引擎负责执行被加载类中包含的指令。数据区中保存了...

    深入Java虚拟机——本地方法栈.pdf

    Java虚拟机(JVM)是Java程序运行的基础,它...本地方法栈使Java能够调用本地库,执行系统级别的操作,而执行引擎则确保字节码的有效执行,优化程序性能。两者共同协作,为Java程序提供了一个高效且灵活的运行环境。

    Java虚拟机(Java VM) msjavax86 微软java虚拟机

    Java虚拟机(Java Virtual Machine,简称JVM)是Java编程语言的核心组成部分,它是一个用于执行Java字节码的软件或硬件设备。Java程序在编译时并不直接转化为机器语言,而是转化为中间代码,即字节码。JVM的作用就是...

    MiniJavaVM—个Java虚拟机的设计和实现

    MiniJavaVM—个Java虚拟机的设计和实现 在本篇文章中,我们将详细介绍 MiniJavaVM 的设计和实现,包括其总体架构、功能、运行环境和开发工具,以及具体的实现步骤。 第一章绪论 Java 虚拟机(Java Virtual ...

    自己动手写Java虚拟机(GO语言)

    4. **执行引擎**:解释执行器或即时编译器(JIT)是JVM执行字节码的关键。书中会介绍如何设计和实现这些组件,以执行字节码指令。 5. **异常处理和多线程**:JVM支持异常处理和多线程,书中会讲解如何在Go中实现...

    Java运行原理与Java虚拟机.pdf

    执行引擎通过字节码验证器(Bytecode Verifier)确保字节码符合安全规范,然后通过解释器或即时编译器(Just-In-Time Compiler, JIT)将字节码转换为机器码执行。 4. **字节码验证器(Bytecode Verifier)**:在代码执行...

    Java虚拟机精讲.高翔龙.带书签完整版.pdf

    本书以极其精练的语句诠释了HotSpot VM 的方方面面,比如:字节码的编译原理、字节码的内部组成结构、通过源码的方式剖析HotSpot VM 的启动过程和初始化过程、Java 虚拟机的运行时内存、垃圾收集算法、垃圾收集器...

    Java 虚拟机规范.pdf

    - **程序计数器**:记录正在执行的虚拟机字节码指令的地址。 3. **类加载机制**: - **加载**:JVM通过类加载器加载Class文件。 - **连接**:连接又分为验证、准备、解析三个阶段。 - **初始化**:类的静态变量...

    Java虚拟机规范PDF

    执行引擎通过解释器逐条解释执行,或者使用即时编译器(JIT)将字节码转换成机器码执行。 #### 6. 字节码指令集 Java字节码指令集是一组操作码,用于指导JVM如何处理特定的任务。它包括加载和存储指令、运算指令、...

    深入理解Java虚拟机(jvm性能调优+内存模型+虚拟机原理).zip

    字节码执行引擎则是JVM的心脏,它通过解释器或即时编译器(JIT)将字节码转换为机器码。JIT技术能够在运行时动态优化代码,显著提升性能。此外,JVM的垃圾收集机制是其内存管理的关键,它自动回收不再使用的对象,...

    JAVA虚拟机解读入门

    3. 执行引擎:负责解释和执行字节码,包括解释器和JIT(Just-In-Time)编译器。解释器逐条执行字节码,而JIT编译器将热点代码编译成本地机器码,以提高执行效率。 4. 内存管理:主要涉及垃圾收集机制,自动回收不再...

    Java虚拟机规范 深入java虚拟机

    它详细阐述了Java虚拟机(JVM)的工作原理,包括内存管理、类加载机制、字节码执行以及垃圾回收等核心概念。深入理解这些知识点对于提升程序性能、解决运行时问题以及设计高效的应用程序至关重要。 1. **JVM架构** ...

    Java虚拟机规范中文版.pdf

    4. 执行引擎:执行引擎负责执行字节码指令。它可以通过解释执行的方式逐条将字节码指令转换成机器码执行,也可以使用即时编译器(JIT)将热点代码编译成高效的本地代码执行。JIT编译器可以在运行时优化代码的性能。 ...

    Java虚拟机简介

    1. **执行引擎**:负责解释执行字节码或直接将字节码转换为机器码执行。 2. **本地方法接口(Native Method Interface)**:允许Java代码调用本地代码(例如C/C++代码)以及本地代码调用Java代码。 3. **Java堆(Heap)*...

    一个简单的Java虚拟机实现(v032)

    Java虚拟机(JVM)是Java程序运行的核心组件,它负责执行字节码,使得Java具有跨平台的能力。...虽然它可能不包含完整的JVM特性,但对于学习JVM的内部机制和字节码执行过程而言,是一个非常有价值的实践项目。

    Java虚拟机的深入研究

    执行引擎是JVM的核心,它根据指令集执行字节码。JVM支持约248个字节码,每个字节码对应一个特定的操作。解释器负责逐行解释执行字节码,而JIT编译器则用于优化性能,将频繁执行的代码段编译成本地机器代码。 JVM的...

    深入Java虚拟机(原书第2版).pdf【附光盘内容】

     本书共分20章,第1-4章解释了java虚拟机的体系结构,包括java栈、堆、方法区、执行引擎等;第5-20章深入描述了java技术的内部细节,包括垃圾收集、java安全模型、java的连接模型和动态扩展机制、class文件、运算及...

    java虚拟机的详细原理

    2. **执行引擎**(Execution Engine):负责解释或编译字节码为机器码并执行。它根据不同的平台可以有不同的实现方式,如解释执行、即时编译(Just-In-Time Compilation)等。 3. **运行时数据区**(Runtime Data ...

    揭秘Java虚拟机-JVM设计原理与实现

    4. **字节码执行**:JVM通过解释器或即时编译器(JIT)来执行字节码。解释器逐行解释执行,而JIT将热点代码编译成机器码,提升运行效率。 5. **内存管理**:JVM自动进行垃圾收集,管理堆内存。它采用分代收集算法,...

Global site tag (gtag.js) - Google Analytics