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

Lub*_*lář 23 memory profiling haskell

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

该程序使用Data.Packed.Matrix来自hmatrix软件包的模块创建2400×2400的双精度矩阵,由于其中的元素应存储在连续内存中,因此我没有看到矩阵占用如此多空间的方法.

在此输入图像描述

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

如果有人对它感兴趣,那么整个源代码都在GitHub上.但是,它与最小的例子相差甚远.

Tom*_*lis 8

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

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