如何转储正在运行的ruby程序的堆内容?

时间:2013-11-23 08:42:21

标签: ruby memory-management

如何转储正在运行的ruby程序的堆内容?

如何在内存中获取此程序分配的大小

array = [1,"hello" , 5.2 , 234567]
puts "hello world"

1 个答案:

答案 0 :(得分:2)

对于统计信息,您可以使用GC.stat

GC.stat
=> {:count=>25,
 :heap_used=>464,
 :heap_length=>802,
 :heap_increment=>338,
 :heap_live_num=>120503,
 :heap_free_num=>78575,
 :heap_final_num=>0,
 :total_allocated_object=>721771,
 :total_freed_object=>601268}

您可以使用同名的gem显示堆转储:https://github.com/Vasfed/heap_dump

这篇最近的帖子也将对问题有所了解:http://samsaffron.com/archive/2013/11/22/demystifying-the-ruby-gc