2010-02-16 35 views
15

Một số tính năng cơ bản/kiến ​​trúc khác biệt giữa BEAM và JVM là gì?Một số tính năng cơ bản/kiến ​​trúc khác biệt giữa BEAM và JVM là gì?

  1. Có, tôi biết: một ban đầu được xây dựng xung quanh java và người kia được xây dựng xung quanh erlang
  2. Tôi hiểu JVM (hơi) và muốn so sánh cấu trúc của họ
  3. Ví dụ tôi biết rằng JVM có một GC toàn cầu và BEAM có một quy trình cho mỗi quy trình

Trả lời

18

Đầu tiên, Beam là máy đăng ký chứ không phải máy xếp chồng. Giống như WAM cho Prolog, nó sử dụng "X-register" là các thanh ghi bình thường (được thực hiện như một mảng trong C) và "Y-register" là tên cho các khe trong bản ghi kích hoạt chức năng cục bộ ("khung gọi") trên ngăn xếp. Không có hướng dẫn thao tác ngăn xếp.

Thứ hai, có hướng dẫn phân bổ nhanh một vài từ bộ nhớ heap, để khởi tạo bộ dữ liệu và cấu trúc dữ liệu khác trên heap, để chọn các phần tử, vv. JVM tập trung vào các đối tượng và có 'mới 'hoạt động ẩn các chi tiết về cấp phát bộ nhớ và khởi tạo cơ bản.

BEAM có hướng dẫn để giảm "bộ đếm giảm" cho quy trình và quyết định xem đã đến lúc thu được để cho một quá trình khác có chạy hay không. Mặt khác, JVM có hướng dẫn đồng bộ hóa cho các luồng.

Một điểm khác biệt quan trọng là BEAM có hướng dẫn cuộc gọi đuôi, mà JVM thiếu.

Cuối cùng, đối với cả BEAM và JVM, tập lệnh được sử dụng trong tệp đối tượng thực sự chỉ là định dạng truyền tải. Trình mô phỏng BEAM ghi lại các hướng dẫn từ tệp vào một phiên bản nội bộ với nhiều hướng dẫn trường hợp đặc biệt được tối ưu hóa (có thể thay đổi từ bản phát hành này sang bản phát hành khác). Ngoài ra, bạn có thể biên dịch thành mã gốc. Hầu hết các JVM làm điều tương tự.

Các vấn đề liên quan