gpt4 book ai didi

architecture - BEAM 和 JVM 之间有哪些基本的功能/架构差异?

转载 作者:行者123 更新时间:2023-12-03 20:26:34 24 4
gpt4 key购买 nike

BEAM 和 JVM 之间有哪些基本的功能/架构差异?

  • 是的,我知道:一个最初是围绕 java 构建的,另一个围绕 erlang
  • 构建
  • 我了解 JVM(有点)并想比较它们的结构
  • 例如,我知道 JVM 有一个全局 GC,而 BEAM 每个进程有一个
  • 最佳答案

    首先,Beam 是一台寄存器机,而不是堆栈机。与 Prolog 的 WAM 一样,它使用“X-registers”作为普通寄存器(在 C 中作为数组实现),以及“Y-registers”作为本地函数激活记录中的插槽名称(“调用帧”)在堆栈上。没有堆栈操作指令。

    其次,有快速分配更多堆内存的指令,用于初始化堆上的元组和其他数据结构,用于选择元组的元素等。JVM专注于对象,并且具有隐藏的"new"操作内存分配和基本初始化的细节。

    BEAM 有一条指令,用于递减进程的“减少计数器”并决定是否该让步以让另一个进程运行。另一方面,JVM 具有线程同步指令。

    一个重要的区别是 BEAM 有尾调用指令,这是 JVM 所缺乏的。

    最后,对于 BEAM 和 JVM,目标文件中使用的指令集实际上只是一种传输格式。 BEAM 仿真器将文件中的指令重写为具有许多优化的特殊情况指令的内部版本(可以从一个版本更改为另一个版本)。或者,您可以编译为 native 代码。大多数 JVM 都做同样的事情。

    关于architecture - BEAM 和 JVM 之间有哪些基本的功能/架构差异?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2276370/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com