Ruby 2.3.0 リファレンスマニュアル > ライブラリ一覧 > 組み込みライブラリ > GCモジュール
クラスの継承リスト: GC
GC は Ruby インタプリタの「ゴミ集め(Garbage Collection)」を制御 するモジュールです。
Ruby 2.1ではRGenGCと呼ばれる新たなGCメカニズムが導入されました。 それにともない、以下の環境変数が導入され、これらを 設定することでGCの動作をチューニングすることができます。 これらの環境変数の効果はRubyの起動時のみ有効です(つまりrubyを動かしている 途中で変更することはできません)。
以下の2つの環境変数はobsoleteであり、新しいものを使うことが望ましい
Rubyが利用するメモリはスロット以外にもある。例えば 長い文字列は malloc によってCのヒープ上に確保される。GCはこのようなヒープ上の メモリを解放するためにも実行される。 そこで、rubyでは malloc によるメモリ消費量を保持し、この消費量が ある閾値を越えるとGCが起動される。また、GCが起動されるごとに この消費量カウンタが0にリセットされる。
このカウンタは2種類あり、一方は malloc_increase_bytes、もう一方は oldmalloc_increase_bytes と呼ばれる。この2つの性質は以下のようになっている。
プログラム実行中には、GCに関する統計情報/閾値情報を GC.stat で見ることができるが、 この文章で説明した以下の情報はこれで調べることができる。
@see ObjectSpace
count -> Integer
[permalink][rdoc]プロセス開始からガーベージコレクトを実行した回数を Integer で返し ます。
GC.count # => 3
disable -> bool
[permalink][rdoc]ガーベージコレクトを禁止します。
前回の禁止状態を返します(禁止されていたなら true, GC が有効であったなら、 false)。
GC.disable # => false
GC.disable # => true
[SEE_ALSO] GC.enable
enable -> bool
[permalink][rdoc]ガーベージコレクトを許可します。
前回の禁止状態を返します(禁止されていたなら true, GC が有効であったなら、 false)。
[SEE_ALSO] GC.disable
GC.disable # => false
GC.enable # => true
GC.enable # => false
latest_gc_info(result_hash = {}) -> Hash
[permalink][rdoc]latest_gc_info(key) -> object
最新のGCの情報を返します。
start(full_mark: true, immediate_sweep: true) -> nil
[permalink][rdoc]ガーベージコレクトを開始します。
GC#garbage_collect や ObjectSpace.#garbage_collect と同じ働きをします。 GC.disable により GC が禁止されている場合は何もしません。
nil を返します。
注意: これらのキーワード引数は Ruby の実装やバージョンによって異なりま す。将来のバージョンとの互換性も保証されません。また、Ruby の実装がサポー トしていない場合はキーワード引数を指定しても無視される可能性があります。
GC.count # => 3
GC.start # => nil
GC.count # => 4
stat(result_hash = {}) -> {Symbol => Integer}
[permalink][rdoc]stat(key) -> Numeric
GC 内部の統計情報を Hash で返します。
GC.stat # => { :count=>0, :heap_allocated_pages=>24, :heap_sorted_length=>24, :heap_allocatable_pages=>0, :heap_available_slots=>9783, :heap_live_slots=>7713, :heap_free_slots=>2070, :heap_final_slots=>0, :heap_marked_slots=>0, :heap_swept_slots=>0, :heap_eden_pages=>24, :heap_tomb_pages=>0, :total_allocated_pages=>24, :total_freed_pages=>0, :total_allocated_objects=>7796, :total_freed_objects=>83, :malloc_increase_bytes=>2389312, :malloc_increase_bytes_limit=>16777216, :minor_gc_count=>0, :major_gc_count=>0, :remembered_wb_unprotected_objects=>0, :remembered_wb_unprotected_objects_limit=>0, :old_objects=>0, :old_objects_limit=>0, :oldmalloc_increase_bytes=>2389760, :oldmalloc_increase_bytes_limit=>16777216 }
戻り値のハッシュは処理系に依存します。これは将来変更になるかもしれません。
本メソッドは C Ruby 以外では動作しません。
stress -> bool
[permalink][rdoc]GCがストレスモードかどうかを返します。
真が設定されている場合は GC を行えるすべての機会に GC を行います。
[SEE_ALSO] GC.stress=
stress=(value)
[permalink][rdoc]GCのストレスモードを引数 value に設定します。 引数 value が真に設定されている間は、GC を行えるすべての機会に GC を行います。
この機能はデバッグ用途に提供されています。ストレスモードを有効にすると プログラムのパフォーマンスが低下します。
マイナー GC を動作させる場合に指定します。
sweep を遅らせる(Lazy Sweep を行う)に指定します。
malloc/calloc/realloc の後でメジャーGCを動作させる場合に指定します。
GC.stress # => false
GC.stress = true
GC.stress # => true
[SEE_ALSO] GC.stress
garbage_collect(full_mark: true, immediate_sweep: true) -> nil
[permalink][rdoc]ガーベージコレクトを開始します。
GC.start や ObjectSpace.#garbage_collect と同じ働きをします。 GC.disable により GC が禁止されている場合は何もしません。
nil を返します。
注意: これらのキーワード引数は Ruby の実装やバージョンによって異なりま す。将来のバージョンとの互換性も保証されません。また、Ruby の実装がサポー トしていない場合はキーワード引数を指定しても無視される可能性があります。
INTERNAL_CONSTANTS -> {Symbol => Integer}
[permalink][rdoc]GC用内部定数の値を保持するハッシュテーブルです。
GC::INTERNAL_CONSTANTS # => {:RVALUE_SIZE=>40, :HEAP_PAGE_OBJ_LIMIT=>408, :HEAP_PAGE_BITMAP_SIZE=>56, :HEAP_PAGE_BITMAP_PLANES=>4}
OPTS -> [String]
[permalink][rdoc]コンパイル時に指定したGCのオプションです。
可能性があるオプション文字列は以下の通りです。
例:
GC::OPTS # => ["USE_RGENGC", "RGENGC_ESTIMATE_OLDMALLOC", "GC_ENABLE_LAZY_SWEEP"] # この場合、GCデバッグ機能やプロファイル機能は無効化されている