一条 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 异常。
之后的内容基本山都是介绍虚拟机指令集,可以当成一个工具来查询,不必太过于深究。
FEATURED TAGS
性能优化
单测
事务
Spring
性能调优
Tomcat
MySQL
系统设计
稳定性建设
synchronized
并发编程
Java内存模型
思维误区
认知成长
简历
爬虫
Github
邮件
经济学
书籍推荐
年度总结
个税
排序
算法
程序员
架构师
软件工程
操作系统
阻塞队列源码系列
推送基础系列
JVM 规范系列
Prometheus 入门系列
集合源码系列
JVM 基础系列
并发集合源码系列
并发包源码系列
线程池源码系列
JVM实战
Apache Common Pool
树结构
数据结构
中年危机
教员
Redis
HBase
有赞
Chrome
技术管理
美团
建站
Kafka
法律
Prometheus
商业
哲学
时间管理
Markdown
面试
华为
Maven
区块链
源码
雷军
小米
线上问题
管理
方法论
数据库
Push
JVM
Alfred
架构设计
计算机原理
MongoDb
职业规划
运维
重构
设计模式
LOG4J
ImageMagick
计算机网络
入门教程
毛主席
Java
Canal
ElasticSearch
Linux
Shell