当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Ruby ObjectSpace.reachable_objects_from用法及代码示例


本文简要介绍ruby语言中 ObjectSpace.reachable_objects_from 的用法。

用法

reachable_objects_from(obj) → array or nil
MRI特异性特征

从‘obj’ 返回所有可到达的对象。

此方法返返回自‘obj’ 的所有可达对象。

如果 ‘obj’ 有两个或多个对同一对象 ‘x’ 的引用,则返回的数组仅包含一个 ‘x’ 对象。

如果‘obj’ 是一个不可标记(非堆管理)对象,例如 true、false、nil、symbols 和 Fixnums(和 Flonum),那么它只返回 nil。

如果‘obj’ 具有对内部对象的引用,则它返回 ObjectSpace::InternalObjectWrapper 类的实例。此对象包含对内部对象的引用,您可以使用‘type’ 方法检查内部对象的类型。

如果‘obj’ 是 ObjectSpace::InternalObjectWrapper 类的实例,则此方法从‘obj’ 指向的内部对象返回所有可达对象。

使用这种方法,您可以找到内存泄漏。

此方法仅适用于 C Ruby 之外的情况。

例子:

ObjectSpace.reachable_objects_from(['a', 'b', 'c'])
#=> [Array, 'a', 'b', 'c']

ObjectSpace.reachable_objects_from(['a', 'a', 'a'])
#=> [Array, 'a', 'a', 'a'] # all 'a' strings have different object id

ObjectSpace.reachable_objects_from([v = 'a', v, v])
#=> [Array, 'a']

ObjectSpace.reachable_objects_from(1)
#=> nil # 1 is not markable (heap managed) object

相关用法


注:本文由纯净天空筛选整理自ruby-lang.org大神的英文原创作品 ObjectSpace.reachable_objects_from。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。