Ruby 2.2.0 リファレンスマニュアル > ライブラリ一覧 > 組み込みライブラリ > GC::Profilerモジュール
クラスの継承リスト: GC::Profiler
GC の起動回数や起動したタイミング、処理時間などの GC に関するプロファイル 情報や、ヒープ全体のサイズ、ヒープ内での使用サイズやヒープ内に存在する オブジェクトの個数といった情報を扱うモジュールです。
@see GC
clear -> nil[permalink][rdoc]蓄積している GC のプロファイル情報をすべて削除します。
例:
GC::Profiler.enable GC.start GC.start GC::Profiler.report #=> 2 回分の GC のプロファイル情報出力する。 GC::Profiler.clear GC.start GC::Profiler.report #=> 1 回分の GC のプロファイル情報出力する。
disable -> nil[permalink][rdoc]GC のプロファイラを停止します。
例:
GC::Profiler.disable GC::Profiler.enabled? #=> false
このメソッドでは、蓄積したプロファイル情報は破棄しません。 破棄したい場合は GC::Profiler.clear を呼び出してください。
[SEE_ALSO] GC::Profiler.enable, GC::Profiler.enabled?
enable -> nil[permalink][rdoc]GC のプロファイラを起動します。
このメソッドを呼び出してから GC が発生すると、 GC についてプロファイル情報を取得します。
例:
GC::Profiler.enable GC::Profiler.enabled? #=> true
[SEE_ALSO] GC::Profiler.disable, GC::Profiler.enabled?
enabled? -> bool[permalink][rdoc]GC のプロファイラを起動中であれば true、停止中であれば false を返します。
例:
GC::Profiler.enabled? #=> false GC::Profiler.enable GC::Profiler.enabled? #=> true GC::Profiler.disable GC::Profiler.enabled? #=> false
[SEE_ALSO] GC::Profiler.enable, GC::Profiler.disable
raw_data -> [Hash, ...] | nil[permalink][rdoc]GC のプロファイル情報を GC の発生ごとに Hash の配列 (:GC_INVOKE_TIME が早いもの順)で返します。GC::Profiler が有効になっ ていない場合は nil を返します。
例:
GC::Profiler.enable
GC.start
GC::Profiler.raw_data
# => [
  {
     :GC_TIME=>1.3000000000000858e-05,
     :GC_INVOKE_TIME=>0.010634999999999999,
     :HEAP_USE_SIZE=>289640,
     :HEAP_TOTAL_SIZE=>588960,
     :HEAP_TOTAL_OBJECTS=>14724,
     :GC_IS_MARKED=>false
  },
  # ...
]
各項目の意味を以下に示します。
GC の処理時間(秒)
Ruby が起動してから GC が起動するまでに経過した時間(秒)
ヒープ内での使用サイズ(バイト)
ヒープ全体のサイズ(バイト)
ヒープ内に存在するオブジェクトの個数
GC がマークフェイズかどうか
また、GC_PROFILE_MORE_DETAIL を有効にして Ruby をビルドした場合、以下の キーも参照できます。
[SEE_ALSO] GC::Profiler.report, GC::Profiler.result
report(out = $stdout) -> nil[permalink][rdoc]GC::Profiler.result の結果を out に出力します。
例
GC::Profiler.enable
GC.start
GC::Profiler.report
# => GC 4 invokes.
# Index    Invoke Time(sec)       Use Size(byte)     Total Size(byte)         Total Object                    GC Time(ms)
#     1               0.019               303720              1269840                31746         1.25899999999999967493
[SEE_ALSO] GC::Profiler.result
result -> String[permalink][rdoc]GC のプロファイル情報をフォーマットし、文字列として返します。
プロファイル情報は、GC の発生ごとに集計します。 以下は、5 回 GC が発生した場合の実行例です。
$ ruby -e "GC::Profiler.enable; a = Array.new(100000){ 'aa' }; puts GC::Profiler.result"
GC 5 invokes.
Index    Invoke Time(sec)       Use Size(byte)     Total Size(byte)         Total Object                    GC Time(ms)
    1               0.012               165600               212940                10647         0.00000000000000000000
    2               0.016               343700               360360                18018         0.00000000000000014129
    3               0.024               605620               622440                31122         0.00000000000000008843
    4               0.028              1080280              1097460                54873         0.40010000000000001119
    5               0.044              1931420              1949220                97461         0.40009999999999984466
各項目の意味を以下に示します。
GC の起動回数
Ruby が起動してから GC が起動するまでに経過した時間
ヒープ内での使用サイズ
ヒープ全体のサイズ
ヒープ内に存在するオブジェクトの個数
GC の処理時間
[SEE_ALSO] GC::Profiler.report
total_time -> Float[permalink][rdoc]GC のプロファイル情報から GC の総計時間を計算し、msec 単位で返します。
例
GC::Profiler.enable
GC.start
GC::Profiler.total_time # => 0.0011530000000000012