我正在尝试分析我的应用程序。在使用-hc
RTS选项分析内存使用情况时,我注意到很多内存被标记为固定的。当使用-hy
运行时,内存被标记为ARR_WORDS
。
程序使用hmatrix包中的Data.Packed.Matrix
模块创建了一个2400×2400的双精度矩阵,由于其中的元素应该存储在连续的内存中,所以我看不到一个方法可以让这个矩阵占用这么大的空间。
我的问题是:固定的单词到底是什么意思?另外,有没有办法进一步了解内存使用的原因和位置?
所有有问题的源代码都是on GitHub,如果有人对它感兴趣的话。然而,这远远不是最小的例子。
发布于 2013-12-10 05:27:16
“固定的”数据意味着垃圾收集器不允许移动它。例如,当通过FFI将数据传递给C函数时,这很有帮助。您不希望GC在C调用执行时移动数据。
Soylet Green给出了上面的相关链接(https://ghc.haskell.org/trac/ghc/wiki/Commentary/Rts/Storage/GC/Pinned)。
https://stackoverflow.com/questions/20478805
复制相似问题