Java虚拟机规范对本地方法和本地方法栈的实现要求是非常宽松的,甚至明确说明“如果Java虚拟机不支持native方法,自己也不依赖传统栈(通常指“C Stacks”)的话,可以无需支持本地方法栈”。商业级别的HotSpot将虚拟机栈和本地方法栈合并,并采用JNI规范来实现本地方法。而本文也采用虚拟机栈和本地方法栈合并的模式来模仿编写。
Java虚拟机之方法引用实现原理(下)
本篇将主要记录invokestatic、invokespecial、invokevirtual指令的实现以及类初始化的编写,invokeinterface的实现基本类似就不赘述了。
Java虚拟机之方法引用实现原理(上)
本篇主要涉及四种方法调用指令:invokestatic、invokespecial、invokevirtual以及invokeinterface。invokestatic和invokespecial指令调用的方法,都可以在解析阶段确定唯一调用版本,在类加载的时候就把符号引用解析为该方法的直接引用,剩下两种需要在运行时再确定。此外,final方法是非虚方法。
Java虚拟机之Class文件(续):探索Java异常处理原理
之前通过《Java虚拟机之Class文件》成功解析了目标Class文件,了解了类文件结构,本篇是对之前的补充,内容涉及CONSTANT_NameAndType表以及Code属性表中的异常表。
特别是本人通过分析Code属性表中的字节码指令,对Java异常处理有了更深入的理解。
Union-Find算法
并查集是一种数据结构,而union-find算法定义了用于此数据结构的操作。这是维基给的简单定义,而这篇笔记主要是针对《算法》这本书上出现的相关问题,暂且不深入展开这个定义。