9

在使用 Haskell 中的各种算法时,我经常会遇到我创建的程序存在内存泄漏,因为它经常发生在惰性求值中。占用所有内存的程序并不是很有趣,如果我意识到太晚了,我经常很难杀死它。

使用 GHC6 时export GHCRTS='-M384m',我的.bashrc. 但在 GHC7 中,他们添加了一项安全措施,除非程序-rtsopts使用GHCRTS. 不幸的是,几乎没有使用此标志编译 Haskell 程序,因此设置此变量会使一切都失败(正如我在升级到 GHC7 后发现的那样,所有程序都突然失败,说“大多数 RTS 选项被禁用。与 -rtsopts 链接以启用它们。 " )。

任何想法如何使用GHCRTSGHC7,或其他方便的方法如何防止我的程序占用所有内存?

4

1 回答 1

5

您可以编译自己的程序以-with-rtsopts=-M384m在编译时设置 RTS 选项(一劳永逸)。您还可以设置不应GHCRTS在您的.bashrc;中运行的程序的“黑名单”。也许像

for i in foo bar baz
do
    alias $i="GHCRTS= $i"
done
于 2012-09-07T19:27:29.210 回答