一條 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 異常。
之后的內容基本山都是介紹虛擬機指令集,可以當成一個工具來查詢,不必太過於深究。