【问题标题】:Does Elixir have a garbage collector?Elixir 有垃圾收集器吗?
【发布时间】:2015-04-21 04:54:42
【问题描述】:

我已经开始阅读 Elixir 编程语言。

我明白:

  1. 功能齐全
  2. 它是动态的,但支持@spec
  3. 它基于 Erlang VM

我的问题是:它有某种 GC 吗?

【问题讨论】:

  • 旁注:@specs 是注解,Elixir 编译器(或 Erlang 编译器)不理解它们。它们主要由名为dialyzer 的静态分析器使用。
  • 例如...如果从网络获取字符串列表,然后我在纯函数中使用它,当函数返回时会发生什么?这个列表是立即销毁还是被某种 GC 销毁?

标签: elixir


【解决方案1】:

是的,Erlang 有 GC,而且由于 Elixir 是基于 Erlang 构建的,它也有 GC。请参阅这个关于 Erlang GC 的旧 SO answerthis 之一。 Elixir 网站对 GC 的引用如下:

由于它们的轻量级特性,拥有数百个并不少见 在同一台机器上同时运行的数千个进程。 隔离允许进程独立地被垃圾收集, 减少系统范围的暂停,并将所有机器资源用作 尽可能高效(垂直缩放)。

【讨论】:

  • 同样在 elixir 中,如果您启动 :observer.start() 并观察程序运行时的图表,您可以在垃圾收集时可视化垃圾。
猜你喜欢
  • 1970-01-01
  • 2023-03-30
  • 2019-11-08
  • 2011-11-17
  • 2021-06-27
  • 2011-09-28
  • 2010-12-16
  • 1970-01-01
  • 2012-04-14
相关资源
最近更新 更多