PINNED在Haskell程序的-hc配置文件中意味着什么?

时间:2013-12-09 19:16:22

标签: haskell memory profiling

我正在尝试描述我的应用程序。在使用-hc RTS选项分析内存使用情况时,我注意到大量内存标记为PINNED。使用-hy运行时,内存标记为ARR_WORDS

该程序使用hmatrix包中的Data.Packed.Matrix模块创建2400×2400的双精度矩阵,由于其中的元素应存储在连续内存中,我看不到矩阵占用的方法这么多空间。

enter image description here

我的问题是:PINNED这个词究竟是什么意思?还有一种方法可以获得有关使用内存的原因和位置的更多信息吗?

有问题的整个源代码是on GitHub,如果有人对它感兴趣的话。但是,它距离最小的例子还很远。

1 个答案:

答案 0 :(得分:8)

“固定”数据意味着不允许垃圾收集器移动它。例如,这有助于通过FFI将数据传递给C函数。在C调用执行期间,您不希望GC移动数据。

Soylet Green给出了上面的相关链接(https://ghc.haskell.org/trac/ghc/wiki/Commentary/Rts/Storage/GC/Pinned)。