理解解释器的内存布局 (JVM/JS)

Understanding Memory Layouts of an Interpreter (JVM/JS)

我想了解 OS 级别的进程的内存布局,我们已经习惯了这张图。

忘记图中的多线程部分,但现在出于一般目的,我们假设上图中显示的 "code" 块是我们程序的二进制指令。这假定代码已经编译为现在可以二进制形式使用。但是解释型语言呢?由 JVM 解释器执行的字节码。当我在这里选择 JVM 解释器时,我的问题是针对任何解释性语言以及它如何适合上图所示。我的理解是,解释器本身是一个程序,因此必须位于上图中所示的代码块中,如果是 Java 则必须是 .class 程序,如果是 [ 则必须是 .js 文件=19=]script interpreters 是 "argument" 可以这么说,这个解释器致力于将它们翻译成 OS/machine 可理解的代码,然后执行。征求您对此的看法。

是否考虑字节码“代码”是一个角度问题。术语有点模糊。

图中的“代码”是本机可执行代码,即您的解释器。就 CPU 和操作系统而言,这是唯一运行的代码。对于OS,被解释的字节码只是实际本地代码操作的数据。

在这种情况下,数据恰好是一种指令形式,也是 CPU 不知道也不关心的细节。