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都做同樣的事情。