有没有办法从正在运行的ruby进程中转储内存中的对象?

时间:2008-09-22 18:15:10

标签: ruby heap

在获取此信息的同时终止该过程将没有问题。

3 个答案:

答案 0 :(得分:2)

快速而肮脏的方式是ObjectSpace.each_object{|e| p e}。你可以做一些测试来确定你想要保留什么,或者确定对象的元帅。

答案 1 :(得分:2)

对于1.9.2 / 1.9.3,有heap_dump gem,它可以使用gdb注入正在运行的进程(但更稳定的是将它包含在进程本身,没有性能开销)

它会转储对象的引用,而不是对象本身,但是如果你正在对抗泄漏,这是可用的

答案 2 :(得分:0)

对于更多的核心,还有BleakHouse,它为您提供了一个特殊的自定义编译的ruby副本,具有更好的内存泄漏跟踪功能