`

虚拟机字节码执行过程

阅读更多
先看个例子吧.
方法定义:

```
public int calc(int a, int b, int c){
        return (a+b) * c;
    }
```
javap 查看其字节码

```
public int calc(int, int, int);
    descriptor: (III)I
    flags: ACC_PUBLIC
    Code:
      stack=2, locals=4, args_size=4
         0: iload_1
         1: iload_2
         2: iadd
         3: iload_3
         4: imul
         5: ireturn
      LineNumberTable:
        line 6: 0
      LocalVariableTable:
        Start  Length  Slot  Name   Signature
            0       6     0  this   Lcom/hanlin/fadp/other/Main;
            0       6     1     a   I
            0       6     2     b   I
            0       6     3     c   I
```
从局部变量表 slot1 处载入一个整数 a到操作数栈.
从局部变量表 slot2 处载入一个整数 b到操作数栈.
从操作数栈弹出2个数,执行整数相加,结果压入操作数栈.
从局部变量表 slot3 处在于一个整数 c 到操作数栈.
从操作数栈弹出两个数,执行相乘.
将操作数栈顶的数弹出,然后压入调用者的操作数栈的栈顶.
0
3
分享到:
评论

相关推荐

    jvm指令手册 +JVM必知必会,掌握虚拟机编译过程.rar

    Java虚拟机在执行字节码时,实际上最终还是把字节码解释成具体平台上的机器指令执行。 JVM指令主要分为:本地变量表到操作数栈类指令、操作数栈到本地变量表类指令、常数到操作数栈类指令、将数组指定索引的数组推送...

    虚拟机运行时栈帧的结构

    在虚拟机规范中制定了虚拟机字节码执行引擎的概念模型,这个概念模型称为各种虚拟机执行引擎的统一外观. 在不同的虚拟机实现里,执行引擎在执行 java 代码的时候,可能会解释执行和编译执行等,但是从外观上来看,...

    字节码文件结构详解.docx

    JVM 执行 Java 程序是一件理所当然的事情,但随着工作过程中接触到了越来越多的基于 JVM 实现的语言如Groovy Kotlin Scala等,就深刻的理解到了 JVM 和 Java 的无关性,JVM 运行的不是 Java 程序,而是符合 JVM ...

    JAVA虚拟机精讲

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

    精简版JVM总结.pdf

    对于 Java 方法,记录正在执行的虚拟机字节码指令的地址;对于 native 方法,记录值为空 (Undefined) 唯一一个Java 虚拟机规范中没有规定任何 OutOfMemoryError 的内存区域 Java 虚拟机栈 每个线程都有独自的...

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

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

    Java虚拟机

    第三部分分析了虚拟机的执行子系统,包括类文件结构、虚拟机类加载机制、虚拟机字节码执行引擎。第四部分讲解了程序的编译与代码的优化,阐述了泛型、自动装箱拆箱、条件编译等语法糖的原理;讲解了虚拟机的热点探测...

    JAVA虚拟机精讲 pdf

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

    Java虚拟机的内存区域划分

    Java虚拟机在执行Java程序的过程中会把它所管理的内存划分成很多个不同的数据区域。这些区域都有各自的用途,以及...  如果线程正在 执行一个Java方法,这个计数器记录的是正在执行的虚拟机字节码指令的地址;如果正在

    java虚拟机精讲(电子工业出版社出版)

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

    计算机二级Java语言复习资料

    1. Java的源程序代码的扩展名为.java。 Java的编译器和解释器的扩展名为.exe,他们分别是javac.exe、java.exe。 通过Java编译器编译生成的是二进制...解释执行过程分三步进行:代码的装入、代码的校验和代码的执行。

    深入理解_Java_虚拟机 JVM_高级特性与最佳实践

    / 189 7.4.1 类与类加载器 / 189 7.4.2 双亲委派模型 / 191 7.4.3 破坏双亲委派模型 / 194 7.5 本章小结 / 197 第8章 虚拟机字节码执行引擎 / 198 8.1 概述 / 198 8.2 运行时栈帧结构 / 199 8.2.1 局部变量...

    JVM——Java虚拟机架构

    Java虚拟机(Javavirtualmachine)实现了Java语言最重要的特征:即平台无关性。平台无关性原理:编译后的Java程序(.class文件)由JVM执行。JVM屏蔽了与具体平台相关的信息,使程序可以在多种...在整个程序执行过程中

    深入理解java类加载机制

    而类加载是Java程序执行过程中的一个重要的组成部分,它实现了程序的动态加载和运行。 在字节码方面,我们将从Java语言的语法和编译原理等重要内容出发,全面解读字节码在Java程序的开发和运行中的应用。我们将详细...

    初步探究Python程序的执行原理

    Python先把代码(.py文件)编译成字节码,交给字节码虚拟机,然后虚拟机一条一条执行字节码指令,从而完成程序的执行。 2. 字节码 字节码在Python虚拟机程序里对应的是PyCodeObject对象。 .pyc文件是字节码在磁盘上...

    Java核心面试题汇总(最新版)

    这里所说的线程指程序执行过程中的一个线程实体。JVM 允许一个应用并发执行多个线程。 Hotspot JVM 中的 Java 线程与原生操作系统线程有直接的映射关系。当线程本地存储、缓 冲区分配、同步对象、栈、程序计数器等...

    mysql______思维导图

    Java是一种特殊的解释型语言(首先将java的类文件编译成jvm能识别的字节码文件,然后针对热点方法,利用JTT即时编译技术,编译执行,而对于非热点方法,采用的则是解释执行),整体过程如下:Java文件在运行前先被...

    北京达内 core java核心课件(含练习题)

    字节码是一套设计用来在Java 运行时系统下执行的高度优化的 指令集。该Java 运行时系统称为Java 虚拟机(JVM)。JVM 其实 就是一个字节码解释器。虚拟机将字节码解释成机器码给CPU 执行,所以我们在java 中通过...

    深入理解Java虚拟机视频教程(jvm性能调优+内存模型+虚拟机原理)视频教程

    视频目录 第1节说在前面的话 [免费观看] 00:05:07分钟 | 第2节整个部分要讲的内容说明 [免费观看] 00:06:58分钟 | 第3节环境搭建以及jdk,...第104节字节码执行引擎小结00:03:38分钟 | 第105节总结与回顾00:10:55分钟

Global site tag (gtag.js) - Google Analytics