まつもと ゆきひろです

In message "[ruby-dev:10001] Re: Generational GC"
    on 00/06/10, Masato KIYAMA <masato / csys.ce.hiroshima-cu.ac.jp> writes:

|> 私もこれが一番悩んだところなんですが、どこにhookを付けました?
|
|オブジェクトの中に,他のオブジェクトのアドレスが入る場所と
|オブジェクトのデータに,他のオブジェクトのアドレスが入る場所
|全てです.

とすると、拡張ライブラリとかでたとえば配列の要素を直接変更し
たらrb_gc_check_refを呼ばないとまずいということでしょうか?
しかも、忘れるとかなりまずくありませんか?

この辺をどう克服するか、ですね。
良い手は思い付かないけど。

|> ところで、オブジェクト数が十分多い場合には現在のGCをキックす
|> る閾値を変えるだけでもそこそこ高速化しそうですが、この件につ
|> いて考えてみたい人はいらっしゃいませんか?
|
|考えてみたいです.
|でも,キックする閾値ってなんでしょうか?
|GC_NEWOBJ_LIMITでしょうか?
|それとも,FREE_MINでしょうか?

両方です。現在のGCは割り当てたオブジェクトの数と割り当てたメ
モリ領域サイズの合計がそれぞれある定数を越えたときにGCを開始
していますが、たとえばこれを可変にすることで、もうちょっとイ
ンテリジェント(かつヒューリスティック)に起動できるような気が
します。極端な話、大量のオブジェクトが割り当てられ、そのほと
んどが生きている状況ではGCを頻繁に呼び出すより、仮想記憶に負
担をかけてでもメモリを捻出した方が賢いですよね。

|一応,HEAP_SLOTSを変化させた評価は取ってます.

この辺の評価も含めて、コラムを書きませんか?
英語もあるとなお良しですが。

                                まつもと ゆきひろ /:|}