`
hhyyllgg
  • 浏览: 28267 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

jvm常用操作码

 
阅读更多
常见的常量入栈的操作码有 const push idc
1,const   i l f d a分别表示 int long float double 对象引用
如:
  • aconst_null 将null对象引用压入栈
  • iconst_m1 将int类型-1压入栈
  • iconst_1 将int类型的1压入栈
  • lconst_3 将long类型的3压入栈
2,push
   
  • bipush 8位带符号的整数压入栈
  • sipush 16位带符号的整数压入栈
3,idc 将常量池中的项压入栈

局部变量中的装载值指令 load
  格式和const差不多,如iload_1 表示从局部变量1中装载int类型值,对于从数组中装载则由两位字母+load表示 如:
  • aaload表示从数组中装载引用类型
  • iaload表示从数组中装载int类型


值存入局部变量指令 store
   格式同上 如:
  • aastore表示将引用类型值存入数组
  • istore_0表示将int类型值存入局部变量0


通用指令
  • popn 弹出栈顶n个字长的内容(n为1时省略)
  • dupn 复制栈顶n个字长的内容(n为1时省略)
  • dupn_xm 复制栈顶n个字长的内容,然后将复制的内容及原来弹出的n+m个字长压入栈 如:
  • dup_x2表示复制栈顶1个字长的内容,然后将复制的内容及原来弹出的3个字长压入栈
  • swap 交换栈顶两个字长的内容



类型转换指令
  • i2l:表示int转为long 其余类似

运算指令

  • add表示加 。。。。 rem取余  neg取反
  • iinc 将常量值加入到int中
  • sh 移位操作


对象操作指令

  • new 创建一个新对象
  • checkcast 检查类型
  • getfield 从对象中获取字段
  • putfield 设置对象中字段的值
  • getstatic 获取类中的静态字段
  • putstatic 设置类中静态字段的值
  • instanceof 判断类型匹配



方法调用及返回指令
  • invokevirtual 根据运行时对像类型调用方法
  • invokespecial 根据编译时的类型调用实例方法以及编译源码生成的init方法
  • invokestatic 调用静态方法
  • invokeinterface 调用接口方法
  • return 返回指令 ireturn返回int return 返回void


分享到:
评论

相关推荐

    jvm 详细介绍,了解jvm各个组成部分和功能

    JVM 的指令集采用了固定长度的格式,每条指令都是由一个操作码(Opcode)和零个或多个操作数组成。这种设计使得指令集既简单又易于扩展。 例如,“iload”表示加载整数到操作数栈,“anewarray”用于创建数组对象,...

    JVM常用知识(面试可用)

    - **程序计数器**:每个线程都有一个独立的计数器,记录当前线程正在执行的字节码指令地址。 - **虚拟机栈**:每个方法调用对应一个栈帧,存储局部变量、操作数栈等信息。 - **本地方法栈**:与虚拟机栈类似,但...

    JVM必知必会

    - **类文件解析**:JVM将类文件中的字节码转换成计算机能够理解的指令执行。 #### 10. 常用工具 - **VisualVM**:是一个可以监控运行时的Java应用程序和环境的工具。 - **Memory Analyzer**:用于分析Java堆转储的...

    java基础之JVM

    JVM的设计目的是为了使Java程序能够跨平台运行——也就是说,只要目标操作系统上安装了相应的JVM,Java程序就可以在该平台上运行。 JVM的主要优点在于它的可移植性。通过在不同的平台上实现JVM,开发者只需要编写一...

    JVM内存空间分配笔记

    - **优点**:解决了JVM无法直接操作底层代码的问题,提高了代码执行效率。 - **特点**:与Java虚拟机栈一样,每个线程拥有独立的本地方法栈。 #### 五、Java堆 Java堆是Java虚拟机所管理的内存中最大的一块,它是...

    R大(国内JVM权威)资料合集

    它提供了一种跨平台的执行环境,使得Java程序无需重新编译就能在任何安装了JVM的操作系统上运行。 #### 2. 编程语言与编译优化书单 - **《The Garbage Collection Handbook》**: 本书深入探讨了垃圾收集的理论与...

    JVM技术培训讲座

    - **基于栈的编译器**:Java使用基于栈的编译器,这意味着编译后的字节码指令操作的是栈顶元素。这种设计有利于提高编译效率和执行速度。 - **编译+解释混合执行**:Java采用了编译加解释的混合执行模式。JIT编译器...

    jvm的基本原理及结构

    JVM提供了多种垃圾收集器,如Serial、Parallel、CMS、G1等,针对不同代的内存使用不同的算法,例如新生代常用的复制算法,老年代的标记-整理算法等。 #### 三、Java代码的编译与执行过程 Java代码的编译和执行过程...

    java获得jvm内存大小

    3. **栈内存(Stack)**:每个线程都有一个私有的栈,用于存储局部变量和操作数栈。 4. **程序计数器(Program Counter Register)**:当前线程所执行的字节码指令地址。 5. **本地方法栈(Native Method Stack)**:类似...

    JVM指令手册.pdf

    JVM指令手册提供的信息是关于如何操作Java字节码,尤其是在栈和局部变量表上的操作。以下是一些重要的JVM指令,它们涉及栈操作和局部变量的加载与存储。 ### 栈和局部变量操作指令 #### 将常量压入栈的指令 - `a...

    mini-jvm使用 Java 8 实现 jvm

    mini-jvm首先需要解析字节码文件,识别其中的类信息、方法信息和操作码。例如,`aload_0`指令代表从局部变量表的第一个位置加载对象引用,`invokevirtual`则用于调用实例方法。mini-jvm需要解析这些字节码指令,并...

    JVM高级特性与最佳实践(第2版)源代码.zip

    - 字节码执行引擎:解析和执行字节码的过程,如操作数栈、本地变量表等。 2. **垃圾收集与内存管理**: - 垃圾收集算法:如标记-清除、复制、标记-整理、分代收集等,以及它们的优缺点。 - 内存分配与回收策略:...

    JVM_GC调优

    #### 三、常用GC算法 1. **引用计数法** - 该方法通过为每个对象添加一个引用计数器来追踪引用的数量。 - 缺点是每次对象赋值都需要更新引用计数器,并且难以处理循环引用的情况。 - 例如,微软的COM、...

    JVM深入解析(JVM specification 和Sun的JVM的内存机制)

    - CMS(Concurrent Mark Sweep)和G1 GC是现代JVM中常用的并发垃圾收集器,它们在减少停顿时间方面表现出色。 6. JVM的Class Loader和Execution Engine - 类加载器负责加载、验证、准备和初始化类文件,确保正确...

    jvm详解 Java语言中所用的常用术语解释

    ### JVM(Java虚拟机)详解:Java语言中所用的常用术语解释 #### 一、Java虚拟机(JVM)概述 Java虚拟机(JVM)是Java语言的核心组件之一,它为Java程序提供了一个运行时环境。JVM的概念是Java语言跨平台能力的关键,...

    jvm优化详解

    JVM是运行Java字节码的抽象计算机,其性能优化对于提高Java应用程序的执行效率至关重要。下面我们来详细探讨一下JVM优化相关的知识点。 首先,JVM优化的目的是为了使Java应用程序能够更快、更高效地运行,并在保证...

    jvm.zip_JVM模拟

    - **类装载器(Class Loader)**:负责加载字节码文件(.class)到JVM内存。 - **运行时数据区(Runtime Data Areas)**:包括方法区、堆、虚拟机栈、本地方法栈和程序计数器。 - **执行引擎(Execution Engine)...

Global site tag (gtag.js) - Google Analytics