首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ObjectSpace#allocation_class_path未按预期工作

ObjectSpace#allocation_class_path未按预期工作
EN

Stack Overflow用户
提问于 2014-06-12 10:09:39
回答 2查看 83关注 0票数 2

使用Ruby版本2.1.2

代码语言:javascript
复制
class A
  def foo
    ObjectSpace::trace_object_allocations do
      obj = Object.new
      p "#{ObjectSpace::allocation_class_path(obj)}"
    end
  end
end

A.new.foo #=> "Class"

预期上述方法将返回对象的分配类路径。但我得到的是一个空字符串,而不是“类”。是方法中的实现错误,还是文档没有更新。

这是链接

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-06-12 13:05:42

我想你刚刚在核心里发现了一个可能的漏洞。我已经向devs报告了这个问题,bug #9938

我确实怀疑lookup_allocation_info来自object_tracing.c,但还需要进一步调查。

更新: Koichi Sasada (又名ko1)已经确定了原因,并承诺在Ruby2.2中进行修正。同时,您可以使用变通方法在以下模块中手动缓存对象名称

ObjectSpace.each_object(Module){|o| o.name}

放置在对象跟踪代码之前。

票数 0
EN

Stack Overflow用户

发布于 2014-06-12 10:49:18

我想你试过这样,

代码语言:javascript
复制
require 'objspace'
class A
  def foo
    ObjectSpace::trace_object_allocations do
      obj = Object.new
      p "#{ObjectSpace::allocation_class_path(obj)}"
    end
  end
end

A.new.foo

#“类”=>“类”

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

https://stackoverflow.com/questions/24181789

复制
相关文章

相似问题

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