BEAM和JVM之間的一些基本特徵/架構差異是什麼?
>是的我知道:一個最初是圍繞著java,另一個是圍繞erlang建造的
>我理解JVM(有些),並希望比較他們的結構
>例如,我知道JVM有一個Global GC,而BEAM每個程序有一個
首先,樑是註冊機,而不是堆疊機.像Prolog的WAM一樣,它使用“X暫存器”,它們是正常暫存器(在C中實現為一個數組)和“Y暫存器”,它們是本地功能啟用記錄(“呼叫幀”)中的插槽的名稱在棧上沒有堆疊操作說明.
其次,有一些說明可以快速分配一堆堆記憶體,用於初始化堆上的元組和其他資料結構,用於選擇元組元素等.JVM專注於物件,並具有隱藏的“新”操作記憶體分配和基本初始化的細節.
BEAM有一個減少程序的“減少計數器”的指令,並決定是否有時間讓另一個程序執行.另一方面,JVM具有針對執行緒的同步指令.
一個重要的區別是,BEAM具有尾部呼叫指令,JVM缺少.
最後,對於BEAM和JVM,目標檔案中使用的指令集只是一種傳輸格式. BEAM模擬器將檔案中的指令重寫為具有許多優化的特例指令(可從一個版本更改為另一個版本)的內部版本.或者,您可以編譯為本機程式碼.大多數JVM都做同樣的事情.
程式碼日誌版權宣告:
翻譯自:http://stackoverflow.com/questions/2276370/what-are-some-fundamental-feature-architectural-differences-between-the-beam-and