深刻了解java虚拟机(JVM) 第十章 字节码指令

1、字节码指令的含义html

  Java字节码指令由一个字节长度的,表明某种特定操做含义的数字(操做码)以及其后的零至多个表明此操做所需参数(操做数)。此外字节码指令是面向操做数栈的,这里操做数栈在功能上对应实体机的寄存器可是结构上有所区别。java

   字节码指令的做用简单的来讲就是jvm将咱们写好的代码翻译成字节码指令存入code中,而后被虚拟机执行引擎执行的。  数组

2、字节码指令的特色jvm

  1.大多数指令是包含类型信息的,如:Iload、fload指令,前面的I和f表明int类型和float类型。性能

  2.也有一些不包含类型信息的指令,如goto
spa

  3.类型多、指令少.net

3、字节码的类型介绍翻译

  1.加载和存储指令code

  加载和存储指令用于将数据在栈帧中的局部变量表和操做数栈之间来回传输。htm

  2.运算指令

  运算指令用于对两个操做数栈上的值进行某种特定的运算,并把结果存储到操做数栈顶。

  3.类型转换指令

  类型转换指令能够将两张不一样的数组类型进行转换,这些转换操做通常用于实现用户代码中的显示类型转换操做,以及用来处理字节码指令集中数据类型相关指令没法与数据类型一一对应的问题。

  4.对象建立与访问指令

  建立类实例、数组或访问类和数的指令。

  5.操做数栈指令

  操做数栈指令用于直接操做操做数栈。

  6.控制转移指令(if else、switch 、for、while……)

  控制转移指令可让java虚拟机有条件或无条件的从指定位置指令而不是控制转移指令的下一条指令继续执行程序,能够认为控制转移指令就是在修改PC寄存器的值。

  7.方法调用指令

  用于调用对象、接口中的方法指令

  8.异常处理指令

  在程序中显式抛出异常操做会由athrow指令实现try/catch代码块,可是在高版本JDK中,try/catch代码块不会影响程序的性能,这是由于catch的执行再也不使用字节码指令,而是使用Exception table执行。

  9.同步指令

  相似与管程(synchronized代码块)的指令。

  想要了解详细的指令,能够参考:http://www.blogjava.net/DLevin/archive/2011/09/13/358497.html

相关文章
相关标签/搜索