深刻了解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

相關文章
相關標籤/搜索