15
BEAM和JVM之间的某些基本功能/体系结构有何不同?BEAM和JVM之间的某些基本功能/架构差异是什么?
- 是的,我知道:围绕Java一个最初周围修建二郎山其他内置
- 我了解JVM(有点),并希望其结构比较
- 比如我知道,JVM有一个全球GC和BEAM有一个过程
BEAM和JVM之间的某些基本功能/体系结构有何不同?BEAM和JVM之间的某些基本功能/架构差异是什么?
首先,梁是一个注册机器,而不是堆栈机器。与Prolog的WAM一样,它使用作为正常寄存器的“X寄存器”(作为C中的一个数组实现)和“Y寄存器”,它们是本地功能激活记录中的插槽的名称(“调用帧”)在堆栈上。没有堆栈操作指令。其次,有快速分配堆内存几个字的指令,用于初始化堆中的元组和其他数据结构,用于选择元组元素等.JVM专注于对象,并且具有'新的'操作隐藏了内存分配和基本初始化的细节。
BEAM有一个指令,用于减少进程的“减少计数器”,并决定是否是让时间让另一个进程运行。另一方面,JVM具有线程的同步指令。
一个重要的区别是BEAM有尾调用指令,JVM缺乏。
最后,对于BEAM和JVM,目标文件中使用的指令集实际上只是一种传输格式。 BEAM仿真器将来自文件的指令重写为具有许多优化的特例指令(可以从一个版本改变为另一个版本)的内部版本。或者,您可以编译为本地代码。大多数JVM都做同样的事情。