2015-04-20 29 views
8

Tôi đã bắt đầu đọc về ngôn ngữ lập trình Elixir.Elixir có một nhà sưu tập rác không?

Tôi hiểu rằng:

  1. Đó là chức năng
  2. Đó là động nhưng hỗ trợ @spec
  3. Nó dựa trên Erlang VM

Câu hỏi của tôi là: Liệu nó có một loại GC?

+1

Lưu ý phụ: '@ spec's là ** chú thích **, chúng không được trình biên dịch Elixir hiểu (hoặc trình biên dịch Erlang). Chúng chủ yếu được sử dụng bởi một máy phân tích tĩnh gọi là [dialyzer] (http://www.erlang.org/doc/man/dialyzer.html). Ví dụ: – whatyouhide

+0

... nếu có danh sách các chuỗi từ mạng và sau đó tôi sử dụng nó trong một hàm thuần túy, điều gì sẽ xảy ra khi hàm trả về? Danh sách này có bị hủy ngay lập tức hoặc bị phá hủy bởi một loại GC không? –

Trả lời

14

Có, Erlang có GC và vì Elixir được xây dựng trên Erlang, nó cũng có GC. Xem SO answer cũ về Erlang GC và this một. Trang web Elixir đề cập đến GC như sau:

Do tính chất nhẹ của chúng, không có gì lạ khi có hàng trăm quy trình chạy đồng thời trong cùng một máy. Cách ly cho phép các quá trình được thu gom rác độc lập, giảm tạm dừng toàn hệ thống và sử dụng tất cả tài nguyên máy như hiệu quả nhất có thể (chia tỷ lệ dọc).

+10

cũng trong elixir bạn có thể hình dung rác khi nó đang được thu thập nếu bạn khởi động: observer.start() và xem các đồ thị khi chương trình của bạn đang chạy. – GavinBrelstaff

+0

Tuyệt vời! tôi không biết điều đó, cảm ơn! –