【发布时间】:2014-10-03 12:44:31
【问题描述】:
如果我打开 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 = 为前缀,也是一样。似乎顶级引用继续保留,无论它们多么难以访问。有什么方法可以清理这些东西,而不会失去能够逐步浏览数据的便利?现在我只是重新启动清理,但不方便。
【问题讨论】:
-
有点迂腐,但这不是内存泄漏,它只是 fsi 的功能。
-
@mydogisbox 根据 Wikipedia 的说法,“当对象存储在内存中但运行代码无法访问时,可能会发生内存泄漏”。在这种情况下,“它的功能”是泄漏内存。
-
好吧,如果你不是在 fsi.exe 中而是在你自己的可执行程序中执行相同的代码,它的行为也会相同。
-
[
] 让 main argv = [1..100000000] [1..100000000] [1..100000000] [1..100000000] [1..100000000] [1. .100000000] [1..100000000] [1..100000000] [1..100000000] printfn "%A" argv 0 // 返回一个整数退出代码 -
它的注释格式错误,但本质上它与主函数中的代码几乎相同
标签: f# f#-interactive