タグ

関連タグで絞り込む (1)

タグの絞り込みを解除

gcに関するsakurasakurasのブックマーク (2)

  • RGenGCとC拡張ライブラリの関係 - mirichiの日記

    Ruby2.1のRGenGCについて対応などを考えていたので個人的まとめ。 ■世代別GCとC拡張ライブラリの相性の悪さ RGenGCは世代別GCである。通常はRubyシステムによって適切に制御されたライトバリアと世代別管理されたGCによって効率よく処理されるが、C拡張ライブラリが関わるとライトバリアの制御が適切に行われない。C拡張ライブラリを書き換えてライトバリアのコードを挿入すればいいわけだが、数が多かったりメンテナ不在だったりするわけで、この方法で対応するのは現実的ではない。 RubyにおいてC拡張ライブラリがライトバリアと相性悪い部分は以下の2点である。 ・CのコードはRubyオブジェクトの内部情報を取り出して保持できる。 ・C実装のクラスはRubyオブジェクト(VALUE型)を保持するC構造体を持つことができる。 たとえばRARRAY_PTRで配列のポインタを取り出して保持した場合

    RGenGCとC拡張ライブラリの関係 - mirichiの日記
  • RGenGCの発表資料を読んだ - oupoの日記

    ささだこういちさんによるRGenGCの発表資料を読みました。 英語だったので条件反射的にウッとなったのですが印刷してボールペンを片手に辞書を開きながら読み通しました。 RGenGCとは何物か、その仕組みはどうなっているのかということに注目してまとめます。誤りがあれば指摘していただけると助かります。 世代別GCの復習 世代別GCではオブジェクトを新世代と旧世代にわけます。 オブジェクトは最初新世代として生成され、一度でもGCして生き残ったオブジェクトは旧世代となります。ふだんのGC (minor GC)では新世代のみを扱い、旧世代オブジェクトは死んでいても回収しません。たまに行うmajor GCで旧世代も含めてGCします。 世代別GCのminor GCでは次のことをします: ルートオブジェクトからたどれるオブジェクトにマークをつけます マークをつけたオブジェクトは旧世代へ移行します ただしマ

    RGenGCの発表資料を読んだ - oupoの日記
  • 1