本文簡要介紹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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。