Ruby 2.2.0 リファレンスマニュアル > ライブラリ一覧 > 組み込みライブラリ > GCモジュール

module GC

クラスの継承リスト: GC

要約

GC は Ruby インタプリタの「ゴミ集め(Garbage Collection)」を制御 するモジュールです。

GCのチューニングについて

Ruby 2.1ではRGenGCと呼ばれる新たなGCメカニズムが導入されました。 それにともない、以下の環境変数が導入され、これらを 設定することでGCの動作をチューニングすることができます。 これらの環境変数の効果はRubyの起動時のみ有効です(つまりrubyを動かしている 途中で変更することはできません)。

チューニングのための環境変数

以下の2つの環境変数はobsoleteであり、新しいものを使うことが望ましい

malloc閾値についての説明

Rubyが利用するメモリはスロット以外にもある。例えば 長い文字列は malloc によってCのヒープ上に確保される。GCはこのようなヒープ上の メモリを解放するためにも実行される。 そこで、rubyでは malloc によるメモリ消費量を保持し、この消費量が ある閾値を越えるとGCが起動される。また、GCが起動されるごとに この消費量カウンタが0にリセットされる。

このカウンタは2種類あり、一方は malloc_increase_bytes、もう一方は oldmalloc_increase_bytes と呼ばれる。この2つの性質は以下のようになっている。

実行中のパラメータ

プログラム実行中には、GCに関する統計情報/閾値情報を GC.stat で見ることができるが、 この文章で説明した以下の情報はこれで調べることができる。

チューニングについて

この設定を理解するための用語集

参考資料

@see ObjectSpace

特異メソッド

定義 説明
count -> Integer

プロセス開始からガーベージコレクトを実行した回数を Integer で返し ます。

disable -> bool

ガーベージコレクトを禁止します。

enable -> bool

ガーベージコレクトを許可します。

latest_gc_info(result_hash = {}) -> Hash
latest_gc_info(key) -> object

最新のGCの情報を返します。

start(full_mark: true, immediate_sweep: true) -> nil

ガーベージコレクトを開始します。

stat(result_hash = {}) -> {Symbol => Integer}
stat(key) -> Numeric

GC 内部の統計情報を Hash で返します。

stress -> bool

GCがストレスモードかどうかを返します。

stress=(value)

GCのストレスモードを引数 value に設定します。 引数 value が真に設定されている間は、GC を行えるすべての機会に GC を行います。

インスタンスメソッド

定義 説明
garbage_collect(full_mark: true, immediate_sweep: true) -> nil

ガーベージコレクトを開始します。

定数

定義 説明
INTERNAL_CONSTANTS -> {Symbol => Integer}

GC用内部定数の値を保持するハッシュテーブルです。

OPTS -> [String]

コンパイル時に指定したGCのオプションです。