天天看點

JVM規範系列第6章:Java虛拟機指令集

一條 Java 虛拟機指令由一個特定操作的操作碼和零至多個操作所使用到的操作數所構成。

虛拟機指令 = 操作碼 + 操作數。

其中,操作碼值分别為 254(0xfe)和 255(0xff),助記符分别為 impdep1 和 impdep2的兩個操作碼是作為“後門”和“陷阱”出現,目的是在某些硬體和軟體中提供一些與實作相關的功能。第三個操作碼值分别為 202(0xca)、助記符為 breakpoint 的操作碼是用于調試器實作斷點功能。

三個保留操作碼:

  • 254(0xfe) impdep1 後門
  • 255(0xff) impdep2 陷進
  • 202(0xca) breakpoint 斷點

以及虛拟機可能出現的 4 個錯誤:

  • InternalError: Java 虛拟機實作的軟體或硬體錯誤都會導緻 InternalError 異常的出現, InternalError 是一個典型的異步異常(§ 2.10),它可能出現在程式中的任何位置。
  • OutOfMemoryError:當 Java 虛拟機實作耗盡了所有虛拟和實體記憶體,并且記憶體自動管理子系統無法回收到足夠共新對象配置設定所需的記憶體空間時,虛拟機将抛出 OutOfMemoryError 異常。
  • StackOverflowError: 當 Java 虛拟機實作耗盡了線程全部的棧空間,這種情況經常是由于程式執行時無限制的遞歸調用而導緻的,虛拟機将會抛出 StackOverflowError異常。
  • UnknownError:當某種異常或錯誤出現,但虛拟機實作無法确定具體實際是哪種異常或錯誤的時候,将會抛出 UnknownError 異常。

之後的内容基本山都是介紹虛拟機指令集,可以當成一個工具來查詢,不必太過于深究。

JVM規範系列文章目錄

  • JVM規範系列開篇:為什麼要讀JVM規範?
  • JVM規範系列第1章:引言
  • JVM規範系列第2章:Java虛拟機結構
  • JVM規範系列第3章:為Java虛拟機編譯
  • JVM規範系列第4章:Class檔案格式
  • JVM規範系列第5章:加載、連結與初始化
  • JVM規範系列第6章:Java虛拟機指令集
  • JVM規範系列:總結