目前主流的JVM,基本都是基于栈式架构的虚拟机:
基于栈的指令集架构
- 设计和实现更简单,适用于资源受限的系统
- 避开了寄存器的分配难题:使用零地址指令方式分配
- 指令流中的指令大部分都是零地址的指令,其执行过程依赖于操作栈。指令集更小,编译器容易实现。
- 不需要硬件的特殊支持,可移植性好,能够更好的实现跨平台
由于是基于栈的架构,零地址指令方式,所以也有相应的缺点:完成同一个操作需要的更多的出栈和入栈指令,这就意味着将需要更多次的指令分派(instruction dispatch)次数以及内存读写次数。
为了解决或者优化这一问题,Hotspot MV的那些大佬们开发了栈顶缓存技术
该技术将栈顶的元素全部缓存到了CPU的物理寄存器中,既能降低内存的读写次数,又能提高执行指令的效率。大概就是这么一个样子,了解记录一下