`

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虚拟机(原书第2版).pdf【附光盘内容】

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

    JAVA虚拟机全面理解.docx

    Java虚拟机(JVM)是Java语言的重要核心之一,它是Java程序运行的基础。Java虚拟机是一种抽象的计算机,...执行引擎层则负责解释Java字节码并执行;应用层则提供了与具体应用相关的功能,如安全管理器、垃圾收集器等。

    java核心.txt

    Java虚拟机的主要任务是装在class文件并且执行其中的字节码。Java虚拟机包含一个类装载器,它可以从程序和 API中装载class文件。Java API中只有程序执行时需要的那些类才会被装载。字节码由执行引擎来执行。不同的...

    JAVA虚拟机精讲

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

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

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

    深入理解Java虚拟机精华知识点

    Java虚拟机(JVM)是Java Virtual Machine的缩写,...类加载器负责将字节码文件加载到内存中,运行时数据区用于存储程序执行时所需的数据,执行引擎则负责执行字节码文件,而垃圾收集器则负责回收不再使用的内存空间。

    JAVA虚拟机精讲 pdf

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

    深入Java虚拟机

    3.4.3 第三趟:字节码验证 3.4.4 第四趟:符号引用的验证 3.4.5 二进制兼容 3.5 Java虚拟机中内置的安全特性 3.6 安全管理器和Java API 3.7 代码签名和认证 3.8 一个代码签名示例 3.9 策略 3.10...

    Java虚拟机

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

    Java虚拟机(JVM)面试题(总结最全面的面试题!!!)

    Java虚拟机(JVM)面试题(总结最全面的面试题!...能不能解释一下方法区(重点理解)什么是JVM字节码执行引擎你听过直接内存吗?知道垃圾收集系统吗?堆栈的区别是什么?深拷贝和浅拷贝Java会存在内存泄漏吗?请说 收

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

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

    虚拟机运行时栈帧的结构

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

    深入java虚拟机第二版

    3.4.3 第三趟:字节码验证 3.4.4 第四趟:符号引用的验证 3.4.5 二进制兼容 3.5 Java虚拟机中内置的安全特性 3.6 安全管理器和Java API 3.7 代码签名和认证 3.8 一个代码签名示例 3.9 策略 3.10 保护域 ...

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

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

    JVM——Java虚拟机架构

    JVM=类加载器classloader+执行引擎executionengine+运行时数据区域runtimedataarea首先Java源代码文件被Java编译器编译为字节码文件,然后JVM中的类加载器加载完毕之后,交由JVM执行引擎执行。在整个

    深入JAVA虚拟机(第2版)

    3.4.3 第三趟:字节码验证 3.4.4 第四趟:符号引用的验证 3.4.5 二进制兼容 3.5 Java虚拟机中内置的安全特性 3.6 安全管理器和Java API 3.7 代码签名和认证 3.8 一个代码签名示例 3.9 策略 ...

    深入理解_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 局部变量...

Global site tag (gtag.js) - Google Analytics