概要
ObjectSpace#count_objects(result_hash = {}) -> Hash
詳細
オブジェクトを種類ごとにカウントした結果を Hash として返却。
サンプルコード
require 'tbpgr_utils' hash = {} bulk_puts_eval binding, <<-EOS ObjectSpace.count_objects class Hoge; end ObjectSpace.count_objects hoge1 = Hoge.new ObjectSpace.count_objects hoge2 = Hoge.new ObjectSpace.count_objects hoge3 = Hoge.new ObjectSpace.count_objects EOS __END__ 下記はTbpgrUtils gemの機能 bulk_puts_eval https://rubygems.org/gems/tbpgr_utils https://github.com/tbpgr/tbpgr_utils
出力
クラス定義後に T_CLASS が増え、(なんで2増えるんだろう?)
インスタンス生成後に T_OBJECT が増えていることが分かる
ObjectSpace.count_objects # => {:TOTAL=>45653, :FREE=>834, :T_OBJECT=>629, :T_CLASS=>957, :T_MODULE=>69, :T_FLOAT=>4, :T_STRING=>21125, :T_REGEXP=>246, :T_ARRAY=>3604, :T_HASH=>151, :T_STRUCT=>10, :T_BIGNUM=>17, :T_FILE=>55, :T_DATA=>2469, :T_MATCH=>9, :T_COMPLEX=>1, :T_NODE=>15404, :T_ICLASS=>69} class Hoge; end # => nil ObjectSpace.count_objects # => {:TOTAL=>46061, :FREE=>1137, :T_OBJECT=>629, :T_CLASS=>959, :T_MODULE=>69, :T_FLOAT=>4, :T_STRING=>21202, :T_REGEXP=>246, :T_ARRAY=>3611, :T_HASH=>153, :T_STRUCT=>10, :T_BIGNUM=>17, :T_FILE=>55, :T_DATA=>2474, :T_MATCH=>9, :T_COMPLEX=>1, :T_NODE=>15416, :T_ICLASS=>69} hoge1 = Hoge.new # => #<Hoge:0x00000600bf6728> ObjectSpace.count_objects # => {:TOTAL=>46061, :FREE=>1067, :T_OBJECT=>630, :T_CLASS=>959, :T_MODULE=>69, :T_FLOAT=>4, :T_STRING=>21252, :T_REGEXP=>246, :T_ARRAY=>3615, :T_HASH=>154, :T_STRUCT=>10, :T_BIGNUM=>17, :T_FILE=>55, :T_DATA=>2479, :T_MATCH=>9, :T_COMPLEX=>1, :T_NODE=>15425, :T_ICLASS=>69} hoge2 = Hoge.new # => #<Hoge:0x00000600bf5c38> ObjectSpace.count_objects(hash) # => {:TOTAL=>46061, :FREE=>995, :T_OBJECT=>631, :T_CLASS=>959, :T_MODULE=>69, :T_FLOAT=>4, :T_STRING=>21302, :T_REGEXP=>246, :T_ARRAY=>3619, :T_HASH=>155, :T_STRUCT=>10, :T_BIGNUM=>17, :T_FILE=>55, :T_DATA=>2484, :T_MATCH=>9, :T_COMPLEX=>1, :T_NODE=>15436, :T_ICLASS=>69} hoge3 = Hoge.new # => #<Hoge:0x00000600bf5120> ObjectSpace.count_objects(hash) # => {:TOTAL=>46061, :FREE=>924, :T_OBJECT=>632, :T_CLASS=>959, :T_MODULE=>69, :T_FLOAT=>4, :T_STRING=>21352, :T_REGEXP=>246, :T_ARRAY=>3623, :T_HASH=>155, :T_STRUCT=>10, :T_BIGNUM=>17, :T_FILE=>55, :T_DATA=>2489, :T_MATCH=>9, :T_COMPLEX=>1, :T_NODE=>15447, :T_ICLASS=>69}