要約
GC の起動回数や起動したタイミング、処理時間などの GC に関するプロファイル情報や、ヒープ全体のサイズ、ヒープ内での使用サイズやヒープ内に存在するオブジェクトの個数といった情報を扱うモジュールです。
@see GC
目次
特異メソッド
- clear -> nil[permalink][rdoc][edit]
- 
蓄積している 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][edit]
- 
GC のプロファイラを停止します。 例: GC::Profiler.disable GC::Profiler.enabled? #=> false このメソッドでは、蓄積したプロファイル情報は破棄しません。破棄したい場合は GC::Profiler.clear を呼び出してください。 [SEE_ALSO] GC::Profiler.enable, GC::Profiler.enabled? 
- enable -> nil[permalink][rdoc][edit]
- 
GC のプロファイラを起動します。 このメソッドを呼び出してから GC が発生すると、 GC についてプロファイル情報を取得します。 例: GC::Profiler.enable GC::Profiler.enabled? #=> true [SEE_ALSO] GC::Profiler.disable, GC::Profiler.enabled? 
- enabled? -> bool[permalink][rdoc][edit]
- 
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][edit]
- 
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_TIME
- 
GC の処理時間(秒) 
- :GC_INVOKE_TIME
- 
Ruby が起動してから GC が起動するまでに経過した時間(秒) 
- :HEAP_USE_SIZE
- 
ヒープ内での使用サイズ(バイト) 
- :HEAP_TOTAL_SIZE
- 
ヒープ全体のサイズ(バイト) 
- :HEAP_TOTAL_OBJECTS
- 
ヒープ内に存在するオブジェクトの個数 
- :GC_IS_MARKED
- 
GC がマークフェイズかどうか 
 また、GC_PROFILE_MORE_DETAIL を有効にして Ruby をビルドした場合、以下のキーも参照できます。 - :GC_MARK_TIME
- :GC_SWEEP_TIME
- :ALLOCATE_INCREASE
- :ALLOCATE_LIMIT
- :HEAP_USE_SLOTS
- :HEAP_LIVE_OBJECTS
- :HEAP_FREE_OBJECTS
- :HAVE_FINALIZE
 [SEE_ALSO] GC::Profiler.report, GC::Profiler.result 
- report(out = $stdout) -> nil[permalink][rdoc][edit]
- 
GC::Profiler.result の結果を out に出力します。 - [PARAM] out:
- 結果の出力先を指定します。デフォルトは $stdout です。
 例 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][edit]
- 
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 invokes
- 
GC の起動回数 
- Invoke Time
- 
Ruby が起動してから GC が起動するまでに経過した時間 
- Use Size
- 
ヒープ内での使用サイズ 
- Total Size
- 
ヒープ全体のサイズ 
- Total Object
- 
ヒープ内に存在するオブジェクトの個数 
- GC Time
- 
GC の処理時間 
 [SEE_ALSO] GC::Profiler.report 
- total_time -> Float[permalink][rdoc][edit]
- 
GC のプロファイル情報から GC の総計時間を計算し、msec 単位で返します。 例 GC::Profiler.enable GC.start GC::Profiler.total_time # => 0.0011530000000000012