haskell - Haskell程序的-hc配置文件中PINNED是什么意思?

标签 haskell memory profiling

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

该程序使用 hmatrix 包中的 Data.Packed.Matrix 模块创建一个 2400×2400 的 double 矩阵,并且由于其中的元素应该存储在连续内存中,我没有看到矩阵占用这么多空间的方式。

enter image description here

我的问题是:PINNED 这个词实际上是什么意思?还有没有办法获得有关为什么以及在何处使用内存的更多信息?

有问题的整个源代码是on GitHub ,是否有人对此感兴趣。然而,它远非最小的例子。

最佳答案

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

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

关于haskell - Haskell程序的-hc配置文件中PINNED是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20478805/

相关文章:

haskell - 使用Data.Memocombinators实现编辑距离算法

java - 程序执行时间

c - Valgrind 消息 : invalid file descriptor 1024 in syscall close()

r - 深入研究R分析信息

javascript - jQuery 分析 - 测量完整的 onReady 运行时

haskell - 小村庄模板中的 $forall 问题

haskell - 可存储向量和未装箱向量之间的差异

java - 直接内存会影响 Java 中的压缩指针吗?

docker - 内存使用差异 : cgroup memory. usage_in_bytes 与 Docker 容器内的 RSS

haskell - http-conduit-1.9.4 中的 requestHeaders