Ruby 4.0 リファレンスマニュアル

module function ObjectSpace?.dump_shapes

dump_shapes(output: :file, since: 0) -> String | File | IO | nilRuby 3.2 から[permalink][rdoc][edit] [added by objspace]

Ruby の shape 木(オブジェクトの内部レイアウトを表す情報)の内容を JSON 形式でダンプします。1 行につき 1 shape 分の JSON が出力されます。

[PARAM] output:
ダンプ結果の出力先を指定します。指定できる値は ObjectSpace?.dump の output と同じです(デフォルトは :file)。
[PARAM] since:
0 以上の整数を指定します。正の整数を指定した場合、指定した shape_id 以降のシェイプのみをダンプします。現在の shape_id は RubyVM.stat:next_shape_id で取得できます。デフォルトは 0 です。
require 'objspace'

str = ObjectSpace.dump_shapes(output: :string)
puts str.lines.size
# => 225 (シェイプの状態に依存するため実行するたびに変わります)

puts str.lines.first
# => {"address":"0x...", "type":"SHAPE", "id":0, "depth":1, "shape_type":"ROOT",
#     "edges":10, "memsize":320}
# (address の値は実行するたびに変わります)
[EXCEPTION] ArgumentError:
output に ObjectSpace?.dump で指定できる値以外を指定した場合に発生します。

戻り値の内容は完全ではない事に注意してください。この内容はあくまでもヒントとして扱う必要があります。

本メソッドは CRuby 以外では動作しない、実験的なメソッドです。出力のフォーマットは将来のバージョンで変更される可能性があります。

[SEE_ALSO] ObjectSpace?.dump, ObjectSpace?.dump_all