當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


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