寻求替代ghc-vis的Haskell堆状态查看工具(支持可视化/文本检查)
Haskell堆可视化与内存共享细节检查工具求助
我对Haskell堆可视化相关内容很感兴趣,但一直没法用ghc-vis工具,感觉它已经过时了。如果这个工具还能在现代环境下编译运行,麻烦提供相关方法;另外也想问问有没有其他支持堆可视化,或者至少能检查内存共享细节的工具?
比如我在ghci里运行了这段代码:
λ> data Person = Person { name :: String, surname :: String, age :: Int } deriving Show λ> baron = Person { name = "Cosimo", surname = "Piovasco di Rondò", age = 12 } λ> oldBaron = baron { age = 65 } λ> brother = baron { name = "Biagio" } λ> baron Person {name = "Cosimo", surname = "Piovasco di Rond\242", age = 12} λ> oldBaron Person {name = "Cosimo", surname = "Piovasco di Rond\242", age = 65} λ> brother Person {name = "Biagio", surname = "Piovasco di Rond\242", age = 12}
我的理解是:
- 计算
baron时会完成大部分内存分配; - 计算
oldBaron时,仅创建必要指针,除age字段需要重新分配Int值外,其余部分和baron共享内存; - 计算
brother时同理,只是重新指向了name字段; - 按照相关视频内容,所有计算完成后,三个Person实例里的6个'o'实际指向同一个内存实例,其他字符也是如此。
有没有工具能直观展示这些内存共享的细节?我知道ghci里的:sprint命令可以查看惰性求值状态,但它没法完整展示堆共享的细节,希望找到更合适的工具。
内容的提问来源于stack exchange,提问作者Enlico
相关产品推荐
相关产品推荐

