Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
为什么 JVM 是基于堆栈的虚拟机?这到底是什么意思,与基于寄存器的虚拟机相比有什么优势?虚拟机制造商还有其他主要的设计/实现选择吗?
基于堆栈的虚拟机非常简单,无论是作为概念还是实现。几乎任何具有 CS 背景的人都可以用几百行代码实现一个简单的功能齐全的 VM。
如果需要,您可以将堆栈视为任意数量的寄存器。从一开始就添加寄存器将是过早的优化。
然后,一个简单的概念可以更轻松地在模型之上执行真正的魔术,例如 Hotspot。这并不简单,但是您可以根据自己的能力选择复杂程度,从直接解释器到简单的 JIT 再到 Hotspot。