From: Masato KIYAMA Date: 2000-06-10T04:48:19+09:00 Subject: [ruby-dev:10001] Re: Generational GC まさとです. > 木山さんにCVSアカウントをあげて枝を作ってもらうのが良いのか > なあ。 もうすこしデバッグなどをして,自分の中でOKがでたときに アカウントをいただけると,うれしいです. そのときは,よろしくお願い致します. > 私もこれが一番悩んだところなんですが、どこにhookを付けました? オブジェクトの中に,他のオブジェクトのアドレスが入る場所と オブジェクトのデータに,他のオブジェクトのアドレスが入る場所 全てです. 僕のパッチをあててもらえば,rb_gc_check_refという関数が 呼ばれているところが参照を調べている場所です. 70ヶ所ぐらいで調べてます. > Dataが他のオブジェクトを参照する可能性についてはどうしました? 実は,後回しにしています. 今のところは,拡張ライブラリを作るひとが rb_gc_check_refを入れなければなりません. > # 私はT_DATAなオブジェクトはすべてremembered setに入れるしか > # ないかと考えたんですが。 うーん. 少し考えてみます. > ところで、オブジェクト数が十分多い場合には現在のGCをキックす > る閾値を変えるだけでもそこそこ高速化しそうですが、この件につ > いて考えてみたい人はいらっしゃいませんか? 考えてみたいです. でも,キックする閾値ってなんでしょうか? GC_NEWOBJ_LIMITでしょうか? それとも,FREE_MINでしょうか? 一応,HEAP_SLOTSを変化させた評価は取ってます. あるプログラムでは,世代別GCとほぼ変わらない性能を出すものもあります. しかし,これはアプリケーションによって最適なHEAP_SLOTSが違うため 適応させるのは難しいと思います. さらに,1回のGC時間が長くなってしまうという問題点もあります. ちょっと考えてみますね. では