8
我在Haskell中编写了一个示例空间泄漏的集合,并且希望编写一个测试套件来捕获我自己,以便插入任何实际上不会泄漏空间的示例。测试Haskell函数是否存在空间泄漏
有没有办法测试这些例子,而不是为每一个单独的可执行文件?
我在Haskell中编写了一个示例空间泄漏的集合,并且希望编写一个测试套件来捕获我自己,以便插入任何实际上不会泄漏空间的示例。测试Haskell函数是否存在空间泄漏
有没有办法测试这些例子,而不是为每一个单独的可执行文件?
您可以通过测试检测到空间泄漏,但无法证明没有空间泄漏。即使内存配置文件相对较低,它可能只是指出空间泄漏非常小,并且您没有做足够的迭代。
要检测内存泄露,你可以使用分配限制和计数器这里描述May I limit memory usage per function/monad/thread in Haskell?
尼尔·米切尔在他的博客中描述一个非常有效和非常低的高科技技术:检测内存泄露 (HTTP:// neilmitchell.blogspot.com/2015/09/detecting-space-leaks.html)。 – Cactus
在某些将来可能会使用静态分析器来检查这一点:)如果这可以形式化,那么检测空间泄漏只是实现算法的问题。 – Shersh
@Cactus:这是一篇很棒的文章。不幸的是,我不知道是否有可能捕捉到内存不足时产生的异常(这是有道理的)。我尝试用'System.Posix.process.forkProcess'在另一个进程中生成异常,并用'ClassyPrelude.catchAny'捕获异常,但它仍然通过并崩溃了测试套件。 – seagreen