这是我阅读的有关JVM的内容。 HotSpot基于堆栈,而Dalvik基于寄存器。如果HotSpot是基于堆栈的,为什么一旦将IT的代码表示成块,我们就不需要完成寄存器分配了?

另外,llvm在哪里适合呢?我读到我们可以将llvm core和backend用于Java源代码。 HotSpot是否使用LLVM?

最佳答案

HotSpot不是基于堆栈的,而是标准的Java字节码。 HotSpot是一种优化的运行时,它可以使用任何可以想像的技巧来快速执行实现JVM规范定义的基于堆栈的计算机的操作语义的代码。由于所有相关的CPU体系结构都是面向寄存器的,因此HotSpot自然会利用它并使用寄存器分配。

HotSpot不使用llvm,它是独立开发的。据我所知,有一个基于llvm的JVM实现,称为J3,与HotSpot无关。

09-27 09:30