3

甚至是非功能/非内存管理语言中的重功能样式。有什么样的技术来处理像中间垃圾这样的问题?在lazynizes/thunk 分配的内存之后进行清理。性能(因为如果您必须跟踪其进度以释放它(智能指针?)

4

2 回答 2

2

您可能对具有线性或唯一性类型的编程语言感兴趣,它们可以管理资源(尤其是内存)。最近的例子:ATSLinearML

已经尝试过“基于区域的内存管理”(例如 Cyclone),但它们还没有起飞——区域也允许(早期)内存回收,但它们还不够(例如,有程序当使用基于区域的内存管理运行时,将表现出不可接受的性能)。我认为这两种方案可以混合使用。

回到你的问题,一些 ATS 程序可以在没有垃圾收集的情况下运行。(我不会说这样的程序是用“函数式”风格编写的,比如用 SML,而是混合了命令式和一阶函数式风格。)

于 2011-05-20T17:23:03.573 回答
1

我能想到的唯一相关的事情是Mlton如何通过区域分析消除垃圾收集的重要部分。理论上,应该有可能实现一个编译器,它将无法管理和未注释的指针泄漏视为错误,然后可以在完全手动的内存管理设置中使用许多函数式编程技术。

于 2011-05-20T10:09:22.680 回答