本文简要介绍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 ObjectSpace.memsize_of_all用法及代码示例
- Ruby ObjectSpace.count_symbols用法及代码示例
- Ruby ObjectSpace.define_finalizer用法及代码示例
- Ruby ObjectSpace.count_imemo_objects用法及代码示例
- Ruby ObjectSpace.allocation_generation用法及代码示例
- Ruby ObjectSpace.each_object用法及代码示例
- Ruby ObjectSpace.allocation_class_path用法及代码示例
- Ruby ObjectSpace.count_objects_size用法及代码示例
- Ruby ObjectSpace.count_nodes用法及代码示例
- Ruby ObjectSpace.trace_object_allocations用法及代码示例
- Ruby ObjectSpace.count_objects用法及代码示例
- Ruby ObjectSpace.count_tdata_objects用法及代码示例
- Ruby ObjectSpace.allocation_method_id用法及代码示例
- Ruby ObjectSpace模块用法及代码示例
- Ruby Object.instance_variable_get用法及代码示例
- Ruby Object.display用法及代码示例
- Ruby Object.remove_instance_variable用法及代码示例
- Ruby Object.define_singleton_method用法及代码示例
- Ruby Object.methods用法及代码示例
- Ruby Object.public_send用法及代码示例
- Ruby Object.xmp用法及代码示例
- Ruby Object.singleton_methods用法及代码示例
- Ruby Object.enum_for用法及代码示例
- Ruby Object.freeze用法及代码示例
- Ruby Object.inspect用法及代码示例
注:本文由纯净天空筛选整理自ruby-lang.org大神的英文原创作品 ObjectSpace.reachable_objects_from。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。