在将数据结构从diffarray 更改为vector之后,在 QuickCheck测试之一期间内存会爆炸(无限增长)。
代码托管在GitHub 上。dev 分支包含不良代码,而 master 分支运行良好。除了微小的更改之外,唯一可能对此产生任何影响的提交就是这个。为了运行 QuickCheck 例程,应该运行可执行测试器。看起来小长度的向量不会使程序崩溃,但是当它变得更长时,程序会变慢并最终炸毁内存。让我感兴趣的另一件事是,在渲染 XML 文件时,我在其他库中遇到了类似的问题。对于小文件(<400k),它运行缓慢但没有崩溃,对于较大的文件,内存会爆炸。Data.Vector 也包含在该库中。我有直觉这些问题是相关的。
编辑:我终于隔离了重现内存泄漏的代码部分,并将其放入一个文件中,可以在此处找到。现在我正在使用与 DiffArray 一样好用的 IArray。要在 IArray 和 Vector 之间切换,必须修改第 49、93 和 101 行。