F#交互式内存泄漏

时间:2014-10-03 12:44:32

标签: f# f#-interactive

如果我打开fsi并粘贴以下内容:

[1..10000000];;
[1..10000000];;
[1..10000000];;
[1..10000000];;
[1..10000000];;
[1..10000000];;
[1..10000000];;
[1..10000000];;
[1..10000000];;

我明白了:

System.OutOfMemoryException: Exception of type 'System.OutOfMemoryException' was thrown.

如果我使用let x =作为前缀,则相同。无论他们多么难以接近,似乎继续保持顶级参考。有没有办法清理这些东西,而不会失去能够单步执行数据的便利?现在我只是重新开始清理,但这很不方便。

2 个答案:

答案 0 :(得分:2)

我认为没有办法清理FSI中的顶级引用。您可以使用64-but模式为F#Interactive进程增加FSI可以解决的内存量。 在VisualStudio中,它是“工具选项-F#工具 - > F#交互式”设置

答案 1 :(得分:2)

由于您愿意使用let x = [1..10000000],请使用:

let mutable x = [1..10000000];; 

并重用数据内存使用:

x <- [1..10000000];;  

并释放数据存储器使用:

x <- [];;