タグ

2008年6月17日のブックマーク (1件)

  • [ruby] Rubyのgc.cを読んでみたまとめ - 本当は怖いHPC

    しばらく前からtwitterRubyのGC読んでるとか読んでないとか言って、結局エントリ書いてなかったのでまとめ。 RubyのGCは、mark and sweepというアルゴリズムを用いている。これは、「必要だとわかっているオブジェクトからスタートして、再帰的にmarkをつけていき、最終的にmarkが無いものを開放するというものだ。まあ発想は素直といえば素直。 GCの流れを説明しよう。mark and sweepなので、markとsweepという2つのフェーズから構成されている。 まず、説明をわかりにくくするためにsweepフェーズから説明すると、オブジェクト用の領域に関してはmallocを使って確保したものをfreeせずに使いまわしている(たぶんそっちのほうが速いから)。free()のコストも馬鹿にならないのだ。だから、最初に書いたmarkがついていないものを開放するというのは、実際に

    [ruby] Rubyのgc.cを読んでみたまとめ - 本当は怖いHPC
    s5ot
    s5ot 2008/06/17