首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我的ObjectSpace.dump不完整?

为什么我的ObjectSpace.dump不完整?
EN

Stack Overflow用户
提问于 2016-02-15 12:11:46
回答 1查看 387关注 0票数 1

我有一个用ObjectSpace.dump_all方法不明白的行为:我需要关闭我的ruby控制台才能得到不截断的结果。

如何复制:

1)打开irb控制台(用2.2.3、2.2.4、2.3.0进行测试)

代码语言:javascript
复制
$ irb

2)运行以下脚本:

代码语言:javascript
复制
require 'objspace'
ObjectSpace.trace_object_allocations_start
dump = ObjectSpace.dump_all(output: :file)
cmd = "tail -1 #{dump.path}"
# => "tail -1 /var/folders/d2/xs3bvd7j1xb8t4bp188bbwc80000gn/T/rubyheap20160215-45059-6djhip.json"
`#{cmd}`
# => "{\"address\":\"0x7fb0822a7df0\", \"type\":\"NODE\", \"frozen\":true, \"node_type\":\"NODE_ARRAY\", \"references\":[\"0"

3)在另一个控制台中,运行相同的尾命令:

代码语言:javascript
复制
$ tail -1 /var/folders/d2/xs3bvd7j1xb8t4bp188bbwc80000gn/T/rubyheap20160215-45059-6djhip.json
{"address":"0x7fb0822a7df0", "type":"NODE", "frozen":true, "node_type":"NODE_ARRAY", "references":["0%

4)在这一步中,我们可以清楚地看到,转储不会以有效的json完成。好的,下一步:关闭irb控制台并重做:

代码语言:javascript
复制
$ tail -1 /var/folders/d2/xs3bvd7j1xb8t4bp188bbwc80000gn/T/rubyheap20160215-45059-6djhip.json
{"address":"0x7fb0822a7fa8", "type":"OBJECT", "class":"0x7fb08216ba68", "ivars":3, "references":["0x7fb0822a7f08"], "memsize":40, "flags":{"wb_protected":true, "old":true, "long_liv
ed":true, "marked":true}}

现在,该文件是一个有效的Json。但是为什么要关闭irb控制台才能获得完整的导出呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-15 13:23:47

好的,dump_all返回一个打开的文件对象。在dump_all之后,您必须关闭该文件:

代码语言:javascript
复制
dump = ObjectSpace.dump_all(output: :file)
dump.close

Thx Uri Agassi

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35409079

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档